模块 jdk.sctp

类 MessageInfo

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

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

SctpChannel.receive SctpMultiChannel.receive 返回的接收到的 SCTP 消息返回一个 MessageInfo 实例,可以查询该实例以确定有关接收到的消息的辅助信息。正在发送的消息应该使用 createOutgoing 方法之一来为正在发送的消息提供辅助数据,并且可以使用适当的设置方法来覆盖为 unordered timeToLive complete payloadProtocolID 提供的默认值,然后再发送消息。

对于外发消息,timeToLive 参数是发送端 SCTP 堆栈可能使消息过期(如果尚未发送)的时间段。该时间段是向堆栈的指示,表明在该时间段到期后不再需要发送消息。这不是硬超时,可能会受到关联是否支持部分可靠性扩展 RFC 3758 的影响。

MessageInfo 实例对于多个并发线程的使用是不安全的。如果一个 MessageInfo 将被多个线程使用,那么对 MessageInfo 的访问应该通过适当的同步来控制。

自从:
1.7
  • 构造方法详细信息

    • MessageInfo

      protected MessageInfo()
      初始化此类的新实例。
  • 方法详情

    • createOutgoing

      public static MessageInfo  createOutgoing(SocketAddress  address, int streamNumber)
      创建一个适合在发送消息时使用的 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 - 如果 associationnull,或者 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 当且仅当消息完成时
      返回:
      此消息信息
      参见:
    • isUnordered

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

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

      public abstract int payloadProtocolID()
      返回负载协议标识符。

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

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

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

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

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

      public abstract int streamNumber()
      如果已收到消息,则返回接收消息的流号,否则返回要发送消息的流号。
      返回:
      流号
    • streamNumber

      public abstract MessageInfo  streamNumber(int streamNumber)
      设置要发送消息的流号。
      参数:
      streamNumber - 流号
      返回:
      此消息信息
      抛出:
      IllegalArgumentException - 如果 streamNumber 为负数或大于 65536
    • timeToLive

      public abstract long timeToLive()
      如果消息尚未发送,则发送方可能使消息过期的时间段,或0表示不应发生超时。该值仅适用于发送的消息,对接收的消息没有意义。
      返回:
      以毫秒为单位的时间段,或0
    • timeToLive

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