MessageInfo 类提供有关消息的附加辅助信息。
SctpChannel.receive 和 SctpMultiChannel.receive 返回的接收到的 SCTP 消息返回一个 MessageInfo 实例,可以查询该实例以确定有关接收到的消息的辅助信息。正在发送的消息应该使用 createOutgoing 方法之一来为正在发送的消息提供辅助数据,并且可以使用适当的设置方法来覆盖为 unordered 、 timeToLive 、 complete 和 payloadProtocolID 提供的默认值,然后再发送消息。
对于外发消息,timeToLive 参数是发送端 SCTP 堆栈可能使消息过期(如果尚未发送)的时间段。该时间段是向堆栈的指示,表明在该时间段到期后不再需要发送消息。这不是硬超时,可能会受到关联是否支持部分可靠性扩展 RFC 3758 的影响。
MessageInfo 实例对于多个并发线程的使用是不安全的。如果一个 MessageInfo 将被多个线程使用,那么对 MessageInfo 的访问应该通过适当的同步来控制。
- 自从:
- 1.7
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract SocketAddressaddress()如果已收到消息,则返回源套接字地址,否则返回要发送的消息的首选目的地。abstract Association如果已收到消息,则返回接收消息的关联,否则返回要发送消息的关联。abstract intbytes()返回为接收到的消息读取的字节数。abstract MessageInfocomplete(boolean complete) 设置消息是否完整。static MessageInfocreateOutgoing(Association association, SocketAddress address, int streamNumber) 创建一个MessageInfo实例,适合在向给定关联发送消息时使用。static MessageInfocreateOutgoing(SocketAddress address, int streamNumber) 创建一个适合在发送消息时使用的MessageInfo实例。abstract boolean判断消息是否完整。abstract boolean判断消息是否无序。abstract int返回负载协议标识符。abstract MessageInfopayloadProtocolID(int ppid) 设置负载协议标识符。abstract int如果已收到消息,则返回接收消息的流号,否则返回要发送消息的流号。abstract MessageInfostreamNumber(int streamNumber) 设置要发送消息的流号。abstract long如果消息尚未发送,则发送方可能使消息过期的时间段,或0表示不应发生超时。abstract MessageInfotimeToLive(long millis) 设置发送方在未发送消息的情况下可以使消息过期的时间段。abstract MessageInfounordered(boolean unordered) 设置消息是否无序。
-
构造方法详细信息
-
MessageInfo
protected MessageInfo()初始化此类的新实例。
-
-
方法详情
-
createOutgoing
创建一个适合在发送消息时使用的MessageInfo实例。返回的实例将其
unordered值设置为false,其timeToLive值设置为0,其complete值设置为true,其payloadProtocolID值设置为0。如果需要,可以在发送消息之前通过适当的设置方法设置这些值。- 参数:
address- 对于已连接的SctpChannel该地址是关联的首选对等地址,用于向其发送消息,或者null使用对等主地址。对于SctpMultiChannel,该地址用于确定关联,或者如果与该地址的对等点不存在关联,则建立一个。streamNumber- 将发送消息的流号- 返回:
- 外发消息信息
- 抛出:
IllegalArgumentException- 如果 streamNumber 为负数或大于65536
-
createOutgoing
public static MessageInfo createOutgoing(Association association, SocketAddress address, int streamNumber) 创建一个MessageInfo实例,适合在向给定关联发送消息时使用。通常用于SctpMultiChannel当已经设置关联时。返回的实例将其
unordered值设置为false,其timeToLive值设置为0,其complete值设置为true,其payloadProtocolID值设置为0。如果需要,可以在发送消息之前通过适当的设置方法设置这些值。- 参数:
association- 发送消息的协会address- 将消息发送到的关联的首选对等地址,或null使用对等主地址streamNumber- 将发送消息的流号。- 返回:
- 外发消息信息
- 抛出:
IllegalArgumentException- 如果association是null,或者 streamNumber 为负数或大于65536
-
address
如果已收到消息,则返回源套接字地址,否则返回要发送的消息的首选目的地。- 返回:
-
套接字地址,或
null如果此实例将用于发送消息并且已在未指定首选目标地址的情况下构造
-
association
如果已收到消息,则返回接收消息的关联,否则返回要发送消息的关联。- 返回:
-
关联,或
null如果此实例用于发送消息并且已使用createOutgoing(SocketAddress,int)静态工厂方法构造
-
bytes
public abstract int bytes()返回为接收到的消息读取的字节数。该方法只适用于收到的消息,对发送的消息没有任何意义。
- 返回:
-
读取的字节数,
-1如果通道是SctpChannel已到达流结束,否则为0
-
isComplete
public abstract boolean isComplete()判断消息是否完整。对于接收到的消息,
true表示消息已完全接收。对于正在发送的消息,true表示消息已完成,false表示消息未完成。发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE套接字选项的值。- 返回:
true当且仅当消息完成时
-
complete
设置消息是否完整。对于正在发送的消息,
true表示消息已完成,false表示消息未完成。发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE套接字选项的值。- 参数:
complete-true当且仅当消息完成时- 返回:
- 此消息信息
- 参见:
-
isUnordered
public abstract boolean isUnordered()判断消息是否无序。对于接收到的消息,true表示消息是无序发送的。对于正在发送的消息,true请求消息的无序传递,false表示消息是有序的。- 返回:
true如果消息是无序的,否则false
-
unordered
设置消息是否无序。- 参数:
unordered-true请求消息的无序传递,false表示消息是有序的。- 返回:
- 此消息信息
- 参见:
-
payloadProtocolID
public abstract int payloadProtocolID()返回负载协议标识符。指示正在传输/接收的有效载荷协议数据类型的值。该值作为不透明数据由 SCTP 传递。
0表示未指定的有效负载协议标识符。- 返回:
- 有效载荷协议标识符
-
payloadProtocolID
设置负载协议标识符。指示正在传输的有效负载协议数据类型的值。该值作为不透明数据由 SCTP 传递。
- 参数:
ppid- 有效载荷协议标识符,或0表示未指定的有效载荷协议标识符。- 返回:
- 此消息信息
- 参见:
-
streamNumber
public abstract int streamNumber()如果已收到消息,则返回接收消息的流号,否则返回要发送消息的流号。- 返回:
- 流号
-
streamNumber
设置要发送消息的流号。- 参数:
streamNumber- 流号- 返回:
- 此消息信息
- 抛出:
IllegalArgumentException- 如果 streamNumber 为负数或大于65536
-
timeToLive
public abstract long timeToLive()如果消息尚未发送,则发送方可能使消息过期的时间段,或0表示不应发生超时。该值仅适用于发送的消息,对接收的消息没有意义。- 返回:
-
以毫秒为单位的时间段,或
0
-
timeToLive
设置发送方在未发送消息的情况下可以使消息过期的时间段。- 参数:
millis- 以毫秒为单位的时间段,或0表示不应发生超时- 返回:
- 此消息信息
- 参见:
-