Module jdk.sctp
Package com.sun.nio.sctp

Class MessageInfo

java.lang.Object
com.sun.nio.sctp.MessageInfo

public abstract class MessageInfo extends Object
MessageInfo类提供有关消息的附加辅助信息。

SctpChannel.receiveSctpMultiChannel.receive返回的接收到的SCTP消息会返回一个MessageInfo实例,可以查询该实例以确定接收消息的附加信息。发送的消息应使用其中一个createOutgoing方法为要发送的消息提供附加数据,并且可以在发送消息之前使用适当的setter方法覆盖为unorderedtimeToLivecompletepayloadProtocolID提供的默认值。

对于发送的消息,timeToLive参数是发送方SCTP堆栈可能在未发送消息的情况下到期的时间段。这个时间段是对堆栈的指示,表示在时间段到期后不再需要发送消息。这不是一个硬超时,并且可能受到关联是否支持部分可靠性扩展的影响,RFC 3758

MessageInfo实例不适合供多个并发线程使用。如果一个MessageInfo要被多个线程使用,则应通过适当的同步来控制对MessageInfo的访问。

自版本:
1.7
  • Constructor Details

    • MessageInfo

      protected MessageInfo()
      初始化此类的新实例。
  • Method Details

    • 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 - 如果associationnull,或streamNumber为负数或大于65536
    • address

      public abstract SocketAddress address()
      如果消息已接收,则返回源套接字地址,否则返回要发送消息的首选目的地。
      返回:
      套接字地址,如果此实例用于发送消息且未指定首选目的地地址,则返回null
    • association

      public abstract Association 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

      public abstract MessageInfo complete(boolean complete)
      设置消息是否完整。

      对于要发送的消息,true表示消息完整,false表示消息不完整。发送通道如何解释此值取决于其SCTP_EXPLICIT_COMPLETE套接字选项的值。

      参数:
      complete - 如果消息完整,则为true
      返回:
      此MessageInfo
      参见:
    • isUnordered

      public abstract boolean isUnordered()
      告知消息是否无序。对于接收到的消息,true表示消息是无序发送的。对于要发送的消息,true请求无序传递消息,false表示消息是有序的。
      返回:
      如果消息是无序的,则返回true,否则返回false
    • unordered

      public abstract MessageInfo unordered(boolean unordered)
      设置消息是否无序。
      参数:
      unordered - true请求无序传递消息,false表示消息是有序的。
      返回:
      此MessageInfo
      参见:
    • payloadProtocolID

      public abstract int payloadProtocolID()
      返回有效载荷协议标识符。

      指示正在传输/接收的有效载荷协议数据类型的值。此值由SCTP作为不透明数据传递。0表示未指定有效载荷协议标识符。

      返回:
      有效载荷协议标识符
    • payloadProtocolID

      public abstract MessageInfo payloadProtocolID(int ppid)
      设置有效载荷协议标识符。

      指示正在传输的有效载荷协议数据类型的值。此值由SCTP作为不透明数据传递。

      参数:
      ppid - 有效载荷协议标识符,或0表示未指定有效载荷协议标识符。
      返回:
      此MessageInfo
      参见:
    • streamNumber

      public abstract int streamNumber()
      返回接收消息的流编号(如果消息已接收),否则返回消息将要发送的流编号。
      Returns:
      The stream number
    • streamNumber

      public abstract MessageInfo streamNumber(int 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

      public abstract MessageInfo timeToLive(long millis)
      设置发送方可以在消息未发送时到期的时间段。
      参数:
      millis - 时间段,以毫秒为单位,或 0 表示不应发生超时
      返回:
      此 MessageInfo
      参见: