MessageInfo
类提供有关消息的附加辅助信息。
由SctpChannel.receive
和SctpMultiChannel.receive
返回的接收到的SCTP消息会返回一个MessageInfo
实例,可以查询该实例以确定接收消息的附加信息。发送的消息应使用其中一个createOutgoing
方法为要发送的消息提供附加数据,并且可以在发送消息之前使用适当的setter方法覆盖为unordered
、timeToLive
、complete
和payloadProtocolID
提供的默认值。
对于发送的消息,timeToLive
参数是发送方SCTP堆栈可能在未发送消息的情况下到期的时间段。这个时间段是对堆栈的指示,表示在时间段到期后不再需要发送消息。这不是一个硬超时,并且可能受到关联是否支持部分可靠性扩展的影响,RFC 3758 。
MessageInfo
实例不适合供多个并发线程使用。如果一个MessageInfo要被多个线程使用,则应通过适当的同步来控制对MessageInfo的访问。
- 自版本:
- 1.7
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract SocketAddress
address()
如果消息已接收,则返回源套接字地址,否则返回要发送消息的首选目的地。abstract Association
返回接收消息的关联(如果消息已接收),否则返回消息将要发送的关联。abstract int
bytes()
返回接收消息的读取字节数。abstract MessageInfo
complete
(boolean complete) 设置消息是否完整。static MessageInfo
createOutgoing
(Association association, SocketAddress address, int streamNumber) 创建适用于向给定关联发送消息的MessageInfo
实例。static MessageInfo
createOutgoing
(SocketAddress address, int streamNumber) 创建适用于发送消息的MessageInfo
实例。abstract boolean
告知消息是否完整。abstract boolean
告知消息是否无序。abstract int
返回有效载荷协议标识符。abstract MessageInfo
payloadProtocolID
(int ppid) 设置有效载荷协议标识符。abstract int
返回消息已接收的流编号(如果消息已接收),否则返回消息将要发送的流编号。abstract MessageInfo
streamNumber
(int streamNumber) 设置消息将要发送的流编号。abstract long
发送方可能在未发送消息的情况下到期的时间段,或0
表示不应发生超时。abstract MessageInfo
timeToLive
(long millis) 设置发送方可能在未发送消息的情况下到期的时间段。abstract MessageInfo
unordered
(boolean unordered) 设置消息是否无序。
-
Constructor Details
-
MessageInfo
protected MessageInfo()初始化此类的新实例。
-
-
Method Details
-
createOutgoing
创建适用于发送消息的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
如果消息已接收,则返回源套接字地址,否则返回要发送消息的首选目的地。- 返回:
-
套接字地址,如果此实例用于发送消息且未指定首选目的地地址,则返回
null
-
association
返回接收消息的关联(如果消息已接收),否则返回消息将要发送的关联。- 返回:
-
关联,如果此实例用于发送消息并使用
createOutgoing(SocketAddress,int)
静态工厂方法构造,则返回null
-
bytes
public abstract int bytes()返回接收消息的读取字节数。此方法仅适用于接收到的消息,对于要发送的消息没有意义。
- 返回:
-
读取的字节数,如果通道是已达到流末尾的
SctpChannel
,则返回-1
,否则返回0
-
isComplete
public abstract boolean isComplete()告知消息是否完整。对于接收到的消息,
true
表示消息已完全接收。对于要发送的消息,true
表示消息完整,false
表示消息不完整。发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE
套接字选项的值。- 返回:
-
如果消息完整,则返回
true
-
complete
设置消息是否完整。对于要发送的消息,
true
表示消息完整,false
表示消息不完整。发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE
套接字选项的值。- 参数:
-
complete
- 如果消息完整,则为true
- 返回:
- 此MessageInfo
- 参见:
-
isUnordered
public abstract boolean isUnordered()告知消息是否无序。对于接收到的消息,true
表示消息是无序发送的。对于要发送的消息,true
请求无序传递消息,false
表示消息是有序的。- 返回:
-
如果消息是无序的,则返回
true
,否则返回false
-
unordered
设置消息是否无序。- 参数:
-
unordered
-true
请求无序传递消息,false
表示消息是有序的。 - 返回:
- 此MessageInfo
- 参见:
-
payloadProtocolID
public abstract int payloadProtocolID()返回有效载荷协议标识符。指示正在传输/接收的有效载荷协议数据类型的值。此值由SCTP作为不透明数据传递。
0
表示未指定有效载荷协议标识符。- 返回:
- 有效载荷协议标识符
-
payloadProtocolID
设置有效载荷协议标识符。指示正在传输的有效载荷协议数据类型的值。此值由SCTP作为不透明数据传递。
- 参数:
-
ppid
- 有效载荷协议标识符,或0
表示未指定有效载荷协议标识符。 - 返回:
- 此MessageInfo
- 参见:
-
streamNumber
public abstract int streamNumber()返回接收消息的流编号(如果消息已接收),否则返回消息将要发送的流编号。- Returns:
- The stream number
-
streamNumber
Sets the stream number that the message is to be sent on.- 参数:
-
streamNumber
- 流编号 - 返回:
- 此 MessageInfo
- 抛出:
-
IllegalArgumentException
- 如果 streamNumber 为负数或大于65536
-
timeToLive
public abstract long timeToLive()发送方可以在消息未发送时到期的时间段,或者0
表示不应发生超时。此值仅适用于正在发送的消息,对于接收到的消息没有意义。- 返回:
-
时间段,以毫秒为单位,或
0
-
timeToLive
设置发送方可以在消息未发送时到期的时间段。- 参数:
-
millis
- 时间段,以毫秒为单位,或0
表示不应发生超时 - 返回:
- 此 MessageInfo
- 参见:
-