- java.lang.Object
-
- com.sun.nio.sctp.MessageInfo
-
public abstract class MessageInfo extends Object
MessageInfo类提供有关消息的其他辅助信息。收到的
SctpChannel.receive和525214622699返回的SCTP消息返回一个MessageInfo实例,可以查询该实例以确定有关接收消息的辅助信息。 消息发送应使用的一个createOutgoing种方法来为所述消息提供辅助数据被发送,并且可以使用适当的设置方法来覆盖所规定的默认值unordered,timeToLive,complete和payloadProtocolID,在发送消息之前。对于外出消息,
timeToLive参数是发送方SCTP堆栈可能在消息尚未发送时到期的时间段。 该时间段表示堆栈在该时间段到期后不再需要发送该消息。 它不是硬超时,可能受关联是否支持部分可靠性扩展RFC 3758的影响 。多个并发线程使用
MessageInfo实例是不安全的。 如果要由多个线程使用MessageInfo,则应通过适当的同步来控制对MessageInfo的访问。- 从以下版本开始:
- 1.7
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedMessageInfo()初始化此类的新实例。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract SocketAddressaddress()如果已收到消息,则返回源套接字地址,否则返回要发送的消息的首选目标。abstract Associationassociation()如果已收到消息,则返回接收消息的关联,否则返回消息将被发送的关联。abstract intbytes()返回为接收的消息读取的字节数。abstract MessageInfocomplete(boolean complete)设置消息是否完整。static MessageInfocreateOutgoing(Association association, SocketAddress address, int streamNumber)创建适用于向给定关联发送消息时使用的MessageInfo实例。static MessageInfocreateOutgoing(SocketAddress address, int streamNumber)创建适合在发送消息时使用的MessageInfo实例。abstract booleanisComplete()判断消息是否完整。abstract booleanisUnordered()判断消息是否无序。abstract intpayloadProtocolID()返回有效内容协议标识符。abstract MessageInfopayloadProtocolID(int ppid)设置有效负载协议标识符。abstract intstreamNumber()如果已收到消息,则返回接收消息的流号,否则返回消息将被发送的流号。abstract MessageInfostreamNumber(int streamNumber)设置要在其上发送消息的流编号。abstract longtimeToLive()发送方可能在未发送消息时使消息到期的时间段,或者0指示不应发生超时的时间段。abstract MessageInfotimeToLive(long millis)设置发送方可能在未发送消息时使消息到期的时间段。abstract MessageInfounordered(boolean unordered)设置消息是否无序。
-
-
-
方法详细信息
-
createOutgoing
public static MessageInfo createOutgoing(SocketAddress address, int streamNumber)
创建适合在发送消息时使用的MessageInfo实例。返回的实例将其
unordered值设置为false,其timeToLive值设置为0,其complete值设置为true,其payloadProtocolID值设置为0。 如果需要,可以在发送消息之前通过适当的setter方法设置这些值。- 参数
-
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。 如果需要,可以在发送消息之前通过适当的setter方法设置这些值。- 参数
-
association- 要发送消息的关联 -
address- 要将消息发送到的关联的首选对等地址,或者是null以使用对等主地址 -
streamNumber- 将在其上发送消息的流编号。 - 结果
- 传出消息信息
- 异常
-
IllegalArgumentException- 如果association是null,或者streamNumber是负数或大于65536
-
address
public abstract SocketAddress address()
如果已收到消息,则返回源套接字地址,否则返回要发送的消息的首选目标。- 结果
-
套接字地址,或
null如果此实例用于发送消息并且已构造而未指定首选目标地址
-
association
public abstract Association 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
public abstract MessageInfo complete(boolean complete)
设置消息是否完整。对于正在发送的消息
true表示消息已完成,false表示消息未完成。 发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE套接字选项的值。- 参数
-
complete-true当且仅当消息完成时 - 结果
- 这个MessageInfo
- 另请参见:
-
isComplete()
-
isUnordered
public abstract boolean isUnordered()
判断消息是否无序。 对于接收的消息,true指示消息是非订购的。 对于正在发送的消息true请求true顺序传递消息,false指示消息已订购。- 结果
-
true如果消息是无序的,否则为false
-
unordered
public abstract MessageInfo unordered(boolean unordered)
设置消息是否无序。- 参数
-
unordered-true请求无序传递消息,false表示消息已订购。 - 结果
- 这个MessageInfo
- 另请参见:
-
isUnordered()
-
payloadProtocolID
public abstract int payloadProtocolID()
返回有效内容协议标识符。指示正在发送/接收的有效载荷协议数据的类型的值。 该值由SCTP作为不透明数据传递。
0表示未指定的有效载荷协议标识符。- 结果
- 有效载荷协议标识符
-
payloadProtocolID
public abstract MessageInfo payloadProtocolID(int ppid)
设置有效负载协议标识符。指示正在传输的有效负载协议数据类型的值。 该值由SCTP作为不透明数据传递。
- 参数
-
ppid- 有效载荷协议标识符,或0指示未指定的有效载荷协议标识符。 - 结果
- 这个MessageInfo
- 另请参见:
-
payloadProtocolID()
-
streamNumber
public abstract int streamNumber()
如果已收到消息,则返回接收消息的流号,否则返回消息将被发送的流号。- 结果
- 流号码
-
streamNumber
public abstract MessageInfo streamNumber(int streamNumber)
设置要在其上发送消息的流编号。- 参数
-
streamNumber- 流编号 - 结果
- 这个MessageInfo
- 异常
-
IllegalArgumentException- 如果streamNumber为负数或大于65536
-
timeToLive
public abstract long timeToLive()
发送方可能在消息尚未发送时使其到期的时间段,或0表示不应发生超时。 此值仅适用于正在发送的消息,对接收的消息没有意义。- 结果
-
时间段(以毫秒为单位)或
0
-
timeToLive
public abstract MessageInfo timeToLive(long millis)
设置发送方可能在未发送消息时使消息到期的时间段。- 参数
-
millis- 以毫秒为单位的时间段,或0,表示不应发生超时 - 结果
- 这个MessageInfo
- 另请参见:
-
timeToLive()
-
-