public final class StandardSocketOptions extends Object
Modifier and Type | Field and Description |
---|---|
static SocketOption<NetworkInterface> |
IP_MULTICAST_IF
互联网协议(IP)组播数据报的网络接口。
|
static SocketOption<Boolean> |
IP_MULTICAST_LOOP
互联网协议(IP)组播数据报的环回。
|
static SocketOption<Integer> |
IP_MULTICAST_TTL
时间到现场的互联网协议(IP)多播数据报。
|
static SocketOption<Integer> |
IP_TOS
互联网协议(IP)头中的服务类型(ToS)八位字节。
|
static SocketOption<Boolean> |
SO_BROADCAST
允许传输广播数据报。
|
static SocketOption<Boolean> |
SO_KEEPALIVE
保持连接活着。
|
static SocketOption<Integer> |
SO_LINGER
如果数据存在,则关闭。
|
static SocketOption<Integer> |
SO_RCVBUF
套接字的大小接收缓冲区。
|
static SocketOption<Boolean> |
SO_REUSEADDR
重用地址。
|
static SocketOption<Integer> |
SO_SNDBUF
套接字发送缓冲区的大小。
|
static SocketOption<Boolean> |
TCP_NODELAY
禁用Nagle算法。
|
public static final SocketOption<Boolean> SO_BROADCAST
此套接字选项的值为Boolean
,表示该选项是启用还是禁用。 该选项特定于面向数据包的套接字发送到IPv4
广播地址。 当套接字选项被启用时,套接字可以用于发送广播数据报 。
此套接字选项的初始值为FALSE
。 套接字选项可以随时启用或禁用。 某些操作系统可能要求Java虚拟机启动具有实现特定权限以启用此选项或发送广播数据报。
public static final SocketOption<Boolean> SO_KEEPALIVE
此套接字选项的值为Boolean
,表示该选项是启用还是禁用。 当启用SO_KEEPALIVE
选项时,当连接SO_KEEPALIVE
时,操作系统可以使用保持活动机制来周期性地探测连接的另一端。 保持活动机制的确切语义是系统依赖的,因此未指定。
此套接字选项的初始值为FALSE
。 套接字选项可以随时启用或禁用。
public static final SocketOption<Integer> SO_SNDBUF
该套接字选项的值是一个Integer
,它是以字节为单位的套接字发送缓冲区的大小。 套接字发送缓冲区是由网络实现使用的输出缓冲区。 可能需要增加大容量连接。 套接字选项的值是实现缓冲区大小的一个暗示 ,实际大小可能不同。 可以查询套接字选项来检索实际大小。
对于面向数据包的套接字,发送缓冲区的大小可能会限制套接字发送的数据报的大小。 是否发送或丢弃大于缓冲区大小的数据报与系统有关。
套接字发送缓冲区的初始/默认大小和允许值的范围是系统依赖的,尽管不允许负数大小。 将套接字发送缓冲区设置为大于其最大大小的尝试将使其设置为其最大大小。
一个实现允许在套接字绑定或连接之前设置此套接字选项。 一个实现是否允许在套接字绑定后更改套接字发送缓冲区是系统依赖的。
public static final SocketOption<Integer> SO_RCVBUF
此套接字选项的值为Integer
,即套接字接收缓冲区的大小(以字节为单位)。 套接字接收缓冲区是由网络实现使用的输入缓冲区。 对于大容量连接可能需要增加或减少以限制可能积压的输入数据。 套接字选项的值是实现缓冲区大小的一个暗示 ,实际大小可能不同。
对于面向数据报的套接字,接收缓冲区的大小可能会限制可以接收的数据报的大小。 是否可以接收到大于缓冲区大小的数据报是系统依赖的。 增加套接字接收缓冲区可能对于数据报以比它们可以处理的更快的速度到达的情况很重要。
在面向流的套接字和TCP / IP协议的情况下,当向远程对等体广告TCP接收窗口的大小时,可以使用套接字接收缓冲区的大小。
套接字接收缓冲区的初始/默认大小和允许值的范围是系统依赖的,尽管不允许负数大小。 将套接字接收缓冲区设置为大于其最大大小的尝试将使其设置为其最大大小。
一个实现允许在套接字绑定或连接之前设置此套接字选项。 一个实现是否允许在套接字绑定之后更改套接字接收缓冲区是系统依赖的。
public static final SocketOption<Boolean> SO_REUSEADDR
此套接字选项的值为Boolean
,表示该选项是启用还是禁用。 此套接字选项的确切语义是套接字类型和系统相关。
在面向流的套接字的情况下,当涉及该套接字地址的先前连接处于TIME_WAIT状态时,此套接字选项通常将决定套接字是否可以绑定到套接字地址。 在语义不同的实现中,并且不需要启用套接字选项以便在先前连接处于此状态时绑定套接字,则实现可能会选择忽略此选项。
对于面向数据报的套接字,套接字选项用于允许多个程序绑定到相同的地址。 当套接字用于互联网协议(IP)组播时,应启用此选项。
一个实现允许在套接字绑定或连接之前设置此套接字选项。 套接字绑定后更改此套接字选项的值不起作用。 此套接字选项的默认值与系统相关。
public static final SocketOption<Integer> SO_LINGER
此套接字选项的值是一个Integer
,它控制未发送数据在套接字上排队时所采取的操作,并调用关闭套接字的方法。 如果套接字选项的值为零或更大,则表示超时值(以秒为单位),称为间隔时间间隔 。 延迟间隔是close
方法在操作系统尝试发送未发送数据或者决定无法发送数据时阻塞的超时。 如果套接字选项的值小于零,则禁用该选项。 在这种情况下, close
方法不等待发送未发送的数据; 如果可能,操作系统将在连接关闭之前传输任何未发送的数据。
此套接字选项仅适用于仅在blocking
模式下配置的套接字。 close
在非阻塞套接字上启用此选项时, close
方法的行为。
此套接字选项的初始值为负值,表示该选项被禁用。 该选项可以在任何时间被启用,或延迟间隔更改。 滞后间隔的最大值取决于系统。 将逗留间隔设置为大于其最大值的值会导致延迟间隔被设置为其最大值。
public static final SocketOption<Integer> IP_TOS
此套接字选项的Integer
Integer,表示套接字发送到IPv4
套接字的IP数据包中ToS字节的值。 ToS八位字节的解释是网络特定的,并没有被这个类定义。 有关ToS八位字节的更多信息,请参见RFC 1349和RFC 2474 。 套接字选项的值是一个提示 。 实现可以忽略该值,或忽略特定值。
ToS字节中TOS字段的初始值/默认值是实现特定的,但通常为0
。 对于面向数据报的套接字,可以在套接字绑定后随时配置该选项。 在发送后续数据报时,会使用八位字节的新值。 系统是否依赖此选项是否可以在绑定套接字之前查询或更改。
此版本中未定义在面向流的套接字或IPv6
套接字上的此套接字选项的行为。
public static final SocketOption<NetworkInterface> IP_MULTICAST_IF
此套接字选项的值为NetworkInterface
,表示由面向数据包的套接字发送的组播数据报的出站接口。 对于IPv6
套接字,则依赖于系统是否设置此选项也设置发送到IPv4地址的组播数据报的出站接口。
此套接字选项的初始/默认值可能为null
,以表示操作系统将通常基于网络路由表选择输出接口。 一个实现允许在套接字绑定后设置此套接字选项。 系统依赖于套接字选项是否可以在绑定套接字之前进行查询或更改。
public static final SocketOption<Integer> IP_MULTICAST_TTL
此套接字选项的值为Integer
,范围为0 <= value <= 255
。 它用于控制由面向数据报的套接字发送的组播数据报的范围。 在IPv4
套接字的情况下,该选项是套接字发送的组播数据报上的生存时间(TTL)。 TTL为零的数据报不会在网络上传输,但可能在本地传送。 在IPv6
套接字的情况下,该选项是跳数限制 ,它是数据报可以在网络到期之前通过的跳数 。 对于IPv6套接字是依赖于系统的选项是否还设置了时间到现场对发送到IPv4地址的组播数据报。
生存时间设置的初始/默认值通常为1
。 一个实现允许在套接字绑定后设置此套接字选项。 系统依赖于套接字选项是否可以在绑定套接字之前进行查询或更改。
public static final SocketOption<Boolean> IP_MULTICAST_LOOP
此套接字选项的值为Boolean
,用于控制组播数据报的环回 。 套接字选项的值表示该选项是启用还是禁用。
此套接字选项的确切语义与系统相关。 特别地,系统是否依赖于环回是否适用于从套接字发送或由套接字接收的组播数据报。 对于IPv6
套接字,则系统依赖该选项是否也适用于发送到IPv4地址的组播数据报。
此套接字选项的初始值/默认值为TRUE
。 一个实现允许在套接字绑定后设置此套接字选项。 系统依赖于套接字选项是否可以在绑定套接字之前进行查询或更改。
public static final SocketOption<Boolean> TCP_NODELAY
此套接字选项的值为Boolean
,表示该选项是启用还是禁用。 套接字选项特定于使用TCP / IP协议的面向流的套接字。 TCP / IP使用称为Nagle算法的算法来聚合短片段并提高网络效率。
此套接字选项的默认值为FALSE
。 只有在已知聚结影响性能的情况下,才能启用套接字选项。 可以随时启用套接字选项。 换句话说,Nagle算法可以被禁用。 启用该选项后,系统是否可以随后禁用。 如果不能,那么调用setOption
方法来禁用该选项就没有效果。