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

Class SctpStandardSocketOptions

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

public final class SctpStandardSocketOptions extends Object
SCTP通道支持此类定义的套接字选项(以及特定通道类中列出的选项),并可能支持额外的实现特定套接字选项。
自从:
1.7
  • Field Details

    • SCTP_DISABLE_FRAGMENTS

      public static final SctpSocketOption<Boolean> SCTP_DISABLE_FRAGMENTS
      启用或禁用消息分段。

      此套接字选项的值是一个表示选项启用或禁用的Boolean。如果启用,则不会执行SCTP消息分段。相反,如果要发送的消息超过当前的PMTU大小,则不会发送消息,并向用户指示错误。

      是否支持此选项取决于具体实现。

    • SCTP_EXPLICIT_COMPLETE

      public static final SctpSocketOption<Boolean> SCTP_EXPLICIT_COMPLETE
      启用或禁用显式消息完成。

      此套接字选项的值是一个表示选项启用或禁用的Boolean。当启用此选项时,可以多次调用send方法以发送消息。 MessageInfoisComplete参数必须仅在最终发送时设置为true,以指示消息已完成。如果禁用此选项,则每个单独的send调用被视为已完成。

      选项的默认值为false,表示选项已禁用。是否支持此选项取决于具体实现。

    • SCTP_FRAGMENT_INTERLEAVE

      public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
      分段交错控制消息接收者的消息呈现方式。定义了三个级别的分段交错。其中两个级别影响SctpChannel,而SctpMultiChannel受到所有三个级别的影响。

      此选项接受一个Integer值。可以将其设置为012

      设置三个级别提供以下接收者交互:

      级别0 - 防止任何消息的交错。这意味着当部分传递开始时,除了正在部分传递的消息外,不会接收到其他消息。如果另一条消息到达不同流(或关联)且可以传递,则将被阻止等待用户读取所有部分传递的消息。

      级别1 - 允许来自不同关联的消息交错。对于SctpChannel,级别0和级别1具有相同的含义,因为SctpChannel始终接收来自同一关联的消息。请注意,将SctpMultiChannel设置为此级别可能会导致来自不同关联的多个部分传递,但对于任何给定关联,直到传递了消息的所有部分之前,只会传递一条消息。这意味着正在使用关联标识“X”读取的一条大消息将阻止传递来自关联“X”的其他消息。

      级别2 - 允许完全交错的消息。此级别要求发送方仔细观察不仅对等方Association,还必须仔细注意流编号。启用此选项后,可能会开始传递关联“X”流“Y”的部分传递消息,而下一个后续接收可能会返回来自关联“X”流“Z”的消息。请注意,在读取完流“Y”的部分传递消息之前,不会传递关联“X”流“Y”的其他消息。请注意,此选项影响两种通道类型。还请注意,对于SctpMultiChannel,不仅可以在下一个接收中传递来自同一关联的另一流的消息,还可以在下一个接收中传递其他关联的消息。

      是否支持此选项取决于具体实现。

    • SCTP_INIT_MAXSTREAMS

      public static final SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> SCTP_INIT_MAXSTREAMS
      在关联初始化期间本地端点请求的最大流数量。

      此套接字选项的值是一个表示通道上关联准备支持的入站和出站流的最大数量的InitMaxStreams

      对于SctpChannel,此选项只能用于在连接之前更改入站/出站流的数量。

      对于SctpMultiChannel,此选项确定在通道上建立的新关联将准备支持的入站/出站流的最大数量。

      对于SctpServerChannel,此选项确定接受的套接字将与其连接对等方协商的入站/出站流的最大数量。

      在所有情况下,此选项设置的值用于在通道套接字上建立新关联的协商,并且可以从适当的Association中检索已与对等方协商的实际最大入站/出站流数量。可以从属于该关联的COMM_UP AssociationChangeNotification中检索Association

      此值受实际实现的限制。换句话说,用户可能支持的流量比操作系统更多。在这种情况下,操作系统限制可能会覆盖用户请求的值。默认值为0表示使用端点的默认值。

    • SCTP_NODELAY

      public static final SctpSocketOption<Boolean> SCTP_NODELAY
      启用或禁用类似Nagle的算法。

      此套接字选项的值是一个表示选项启用或禁用的Boolean。SCTP使用类似Nagle算法的算法来合并短段并提高网络效率。

    • SCTP_PRIMARY_ADDR

      public static final SctpSocketOption<SocketAddress> SCTP_PRIMARY_ADDR
      请求本地SCTP堆栈使用给定的对等地址作为关联主地址。

      此套接字选项的值是一个表示本地SCTP堆栈应将其用作关联主地址的对等地址的SocketAddress。地址必须是关联对等方的地址之一。

      SctpMultiChannel可以控制多个关联,因此在设置或检索此选项时必须提供关联参数。

      由于SctpChannel仅控制一个关联,因此不需要关联参数,可以直接设置或查询此选项。

    • SCTP_SET_PEER_PRIMARY_ADDR

      public static final SctpSocketOption<SocketAddress> SCTP_SET_PEER_PRIMARY_ADDR
      请求对等方将封闭地址标记为关联主地址。

      此套接字选项的值是一个表示对等方应将其用作其主地址的本地地址的SocketAddress。给定地址必须是关联的本地绑定地址之一。

      SctpMultiChannel可以控制多个关联,因此在设置或检索此选项时必须提供关联参数。

      由于SctpChannel仅控制一个关联,因此不需要关联参数,可以直接查询此选项。

      请注意,这是一个仅设置选项,无法通过getOption检索。是否支持此选项取决于具体实现。

    • SO_SNDBUF

      public static final SctpSocketOption<Integer> SO_SNDBUF
      套接字发送缓冲区的大小。

      此套接字选项的值是一个表示套接字发送缓冲区大小(以字节为单位)的Integer。套接字发送缓冲区是网络实现使用的输出缓冲区。可能需要增加此值以支持高容量连接。套接字选项的值是对实现的提示,以确定缓冲区的大小,实际大小可能有所不同。可以查询套接字选项以检索实际大小。

      对于SctpChannel,这控制SCTP堆栈可以在内部缓冲区中等待发送的数据量。因此,此选项限制了可以在单个发送调用中发送的数据的最大大小。

      对于SctpMultiChannel,效果与SctpChannel相同,只是应用于所有关联。该选项分别应用于每个关联的窗口大小。

      实现允许在绑定或连接套接字之前设置此套接字选项。是否允许在绑定套接字后更改套接字发送缓冲区大小取决于系统。

    • SO_RCVBUF

      public static final SctpSocketOption<Integer> SO_RCVBUF
      套接字接收缓冲区的大小。

      此套接字选项的值是一个表示套接字接收缓冲区大小(以字节为单位)的Integer。套接字接收缓冲区是网络实现使用的输入缓冲区。可能需要增加此值以支持高容量连接,或减少以限制可能的传入数据积压。套接字选项的值是对实现的提示,以确定缓冲区的大小,实际大小可能有所不同。

      对于SctpChannel,这控制接收窗口大小。

      对于SctpMultiChannel,含义取决于实现。它可能控制绑定到套接字描述符的每个关联的接收缓冲区,也可能控制整个套接字的接收缓冲区。

      实现允许在绑定或连接套接字之前设置此套接字选项。是否允许在绑定套接字后更改套接字接收缓冲区大小取决于系统。

    • SO_LINGER

      public static final SctpSocketOption<Integer> SO_LINGER
      如果存在数据,请保持接近。

      此套接字选项的值是一个整数,用于控制当套接字上排队了未发送的数据并调用了关闭套接字的方法时所采取的操作。如果套接字选项的值为零或更大,则表示一个超时值,以秒为单位,称为逗留间隔。逗留间隔是close方法阻塞的超时时间,而操作系统尝试传输未发送的数据或者决定无法传输数据。如果套接字选项的值小于零,则选项被禁用。在这种情况下,close方法不会等待未发送的数据被传输;如果可能的话,操作系统会在连接关闭之前传输任何未发送的数据。

      此套接字选项仅适用于在阻塞模式下配置的套接字。当在非阻塞套接字上启用此选项时,close方法的行为未定义。

      此套接字选项的初始值为负值,表示该选项已禁用。可以随时启用该选项或更改逗留间隔。逗留间隔的最大值取决于系统。将逗留间隔设置为大于其最大值的值会导致逗留间隔被设置为其最大值。