- java.lang.Object
-
- com.sun.nio.sctp.SctpStandardSocketOptions
-
public class SctpStandardSocketOptions extends Object
SCTP通道支持此类定义的套接字选项(以及特定通道类中列出的套接字选项),并且可能支持其他特定于实现的套接字选项。- 从以下版本开始:
- 1.7
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
SctpStandardSocketOptions.InitMaxStreams
此类用于设置关联初始化期间本地端点使用的最大入站/出站流数。
-
字段汇总
字段 变量和类型 字段 描述 static SctpSocketOption<Boolean>
SCTP_DISABLE_FRAGMENTS
启用或禁用消息碎片。static SctpSocketOption<Boolean>
SCTP_EXPLICIT_COMPLETE
启用或禁用显式消息完成。static SctpSocketOption<Integer>
SCTP_FRAGMENT_INTERLEAVE
分段交织控制消息的呈现方式如何发生在消息接收器上。static SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams>
SCTP_INIT_MAXSTREAMS
关联初始化期间本地端点请求的最大流数。static SctpSocketOption<Boolean>
SCTP_NODELAY
启用或禁用类似Nagle的算法。static SctpSocketOption<SocketAddress>
SCTP_PRIMARY_ADDR
请求本地SCTP堆栈使用给定的对等地址作为关联主要。static SctpSocketOption<SocketAddress>
SCTP_SET_PEER_PRIMARY_ADDR
请求对等方将封闭的地址标记为关联主要。static SctpSocketOption<Integer>
SO_LINGER
如果数据存在,则关闭。static SctpSocketOption<Integer>
SO_RCVBUF
套接字接收缓冲区的大小。static SctpSocketOption<Integer>
SO_SNDBUF
套接字发送缓冲区的大小。
-
-
-
字段详细信息
-
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
方法发送消息。 对于最终发送,MessageInfo
的isComplete
参数必须仅设置为true
,以指示消息已完成。 如果禁用此选项,则认为每个单独的send
调用send
完成。该选项的默认值为
false
表示该选项已禁用。 无论是否支持此选项,都是特定于实现的。
-
SCTP_FRAGMENT_INTERLEAVE
public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
分段交织控制消息的呈现方式如何发生在消息接收器上。 定义了三个级别的片段交错。 其中两个级别影响SctpChannel
,而SctpMultiChannel
影响所有三个级别。此选项的值为
Integer
。 它可以被设置为值0
,1
或2
。设置三个级别提供以下接收器交互:
level 0
- 防止任何消息的交错。 这意味着当部分传递开始时,除了部分传递的消息之外,不会收到任何其他消息。 如果另一个消息到达可以传递的不同流(或关联),则将阻止该消息等待用户读取所有部分传递的消息。level 1
- 允许交错来自不同关联的消息。 对于SctpChannel
,级别0和级别1具有相同的含义,因为SctpChannel
始终从同一关联接收消息。 请注意,将SctpMultiChannel
设置为此级别可能会导致来自不同关联的多个部分传递,但对于任何给定的关联,只有一条消息将被传递,直到消息的所有部分都已传递。 这意味着,使用关联标识“X”读取的一条大消息将阻止来自关联“X”的其他消息被传递。level 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
检索已与对等方协商的实际最大入站/出站流数 。 所述Association
可以从被检索COMM_UP
AssociationChangeNotification
属于该关联。该值受实际实现的限制。 换句话说,用户可能能够支持比操作系统更多的流。 在这种情况下,操作系统限制可能会覆盖用户请求的值。 默认值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堆栈使用给定的对等地址作为关联主要。此套接字选项的值为
SocketAddress
,表示本地SCTP堆栈应用作关联主数据库的对等地址。 地址必须是关联对等方的地址之一。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
如果数据存在,则关闭。此套接字选项的值是
Integer
,它控制当未发送的数据在套接字上排队时采取的操作,并且调用关闭套接字的方法。 如果套接字选项的值为零或更大,则它表示超时值(以秒为单位),称为延迟间隔 。close
间隔是close
方法在操作系统尝试传输未发送数据时阻止的超时,或者它确定无法传输数据。 如果套接字选项的值小于零,则禁用该选项。 在这种情况下,close
方法不会等到发送未发送的数据; 如果可能,操作系统将在连接关闭之前传输任何未发送的数据。此套接字选项仅适用于以
blocking
模式配置的套接字。close
在非阻塞套接字上启用此选项时close
方法的行为。此套接字选项的初始值为负值,表示该选项已禁用。 可以随时启用该选项,或更改逗留间隔。 延迟间隔的最大值取决于系统。 将延迟时间间隔设置为大于其最大值的值会导致将延迟时间间隔设置为其最大值。
-
-