- java.lang.Object
-
- com.sun.nio.sctp.SctpStandardSocketOptions
-
public class SctpStandardSocketOptions extends Object
SCTP通道支持此类定义的套接字选项(以及特定通道类中列出的套接字选项),并且可以支持额外的实现特定套接字选项。- 从以下版本开始:
- 1.7
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
SctpStandardSocketOptions.InitMaxStreams
此类用于设置关联初始化期间本地端点使用的入站/出站流的最大数量。
-
Field Summary
Fields Modifier and Type Field 描述 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
方法多次调用到发送消息。 该isComplete
的参数MessageInfo
只能设置为true
的最后发送,以表明该消息是完整的。 如果禁用此选项,则每个单独的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
方法的行为。此套接字选项的初始值为负值,表示该选项被禁用。 该选项可以在任何时间被启用,或延迟间隔更改。 滞后间隔的最大值取决于系统。 将逗留间隔设置为大于其最大值的值会导致延迟间隔被设置为其最大值。
-
-