模块  java.base
软件包  java.net

Class StandardSocketOptions


  • public final class StandardSocketOptions
    extends Object
    定义标准套接字选项。

    此类定义的每个套接字选项的name是其字段名称。

    在此版本中,这里定义的插座选项由使用network在通道channels包。

    从以下版本开始:
    1.7
    • 字段详细信息

      • SO_BROADCAST

        public static final SocketOption<Boolean> SO_BROADCAST
        允许传输广播数据报。

        此套接字选项的值为Boolean ,表示选项是启用还是禁用。 该选项特定于发送到IPv4广播地址的面向数据报的套接字。 启用套接字选项后,套接字可用于发送广播数据报

        此套接字选项的初始值为FALSE 可以随时启用或禁用套接字选项。 某些操作系统可能要求使用特定于实现的特权启动Java虚拟机以启用此选项或发送广播数据报。

        另请参见:
        RFC 929: Broadcasting Internet DatagramsDatagramSocket.setBroadcast(boolean)
      • SO_KEEPALIVE

        public static final SocketOption<Boolean> SO_KEEPALIVE
        保持连接活着。

        此套接字选项的值为Boolean ,表示该选项是启用还是禁用。 当启用SO_KEEPALIVE选项时,操作系统可以使用保持活动机制在连接空闲时定期探测连接的另一端。 保持活动机制的确切语义是系统相关的,因此未指定。

        此套接字选项的初始值为FALSE 可以随时启用或禁用套接字选项。

        另请参见:
        RFC 1122 Requirements for Internet Hosts -- Communication LayersSocket.setKeepAlive(boolean)
      • SO_SNDBUF

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

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

        对于面向数据报的套接字,发送缓冲区的大小可能会限制套接字可能发送的数据报的大小。 是否发送或丢弃大于缓冲区大小的数据报是系统相关的。

        套接字发送缓冲区的初始/默认大小和允许值的范围取决于系统,但不允许使用负大小。 尝试将套接字发送缓冲区设置为大于其最大大小会导致将其设置为其最大大小。

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

        另请参见:
        Socket.setSendBufferSize(int)
      • SO_RCVBUF

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

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

        对于面向数据报的套接字,接收缓冲区的大小可能会限制可以接收的数据报的大小。 是否可以接收大于缓冲区大小的数据报是系统相关的。 增加套接字接收缓冲区对于数据报以比可处理的更快的速度到达突发事件的情况可能很重要。

        在面向流的套接字和TCP / IP协议的情况下,当向远程对等体通告TCP接收窗口的大小时,可以使用套接字接收缓冲区的大小。

        套接字接收缓冲区的初始/默认大小和允许值的范围取决于系统,但不允许使用负大小。 尝试将套接字接收缓冲区设置为大于其最大大小会导致将其设置为其最大大小。

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

        另请参见:
        RFC 1323: TCP Extensions for High PerformanceSocket.setReceiveBufferSize(int)ServerSocket.setReceiveBufferSize(int)
      • SO_REUSEADDR

        public static final SocketOption<Boolean> SO_REUSEADDR
        重复使用地址。

        此套接字选项的值为Boolean ,表示该选项是启用还是禁用。 此套接字选项的确切语义是套接字类型和系统相关。

        在面向流的套接字的情况下,当涉及该套接字地址的先前连接处于TIME_WAIT状态时,此套接字选项通常将确定套接字是否可以绑定到套接字地址。 在语义不同的实现上,并且当前一个连接处于此状态时,为了绑定套接字而不需要启用套接字选项,则实现可以选择忽略此选项。

        对于面向数据报的套接字,套接字选项用于允许多个程序绑定到同一地址。 当套接字用于Internet协议(IP)多播时,应启用此选项。

        实现允许在绑定或连接套接字之前设置此套接字选项。 绑定套接字后更改此套接字选项的值无效。 此套接字选项的默认值取决于系统。

        另请参见:
        RFC 793: Transmission Control ProtocolServerSocket.setReuseAddress(boolean)
      • SO_REUSEPORT

        public static final SocketOption<Boolean> SO_REUSEPORT
        重用端口。

        此套接字选项的值为Boolean ,表示该选项是启用还是禁用。 此套接字选项的确切语义是套接字类型和系统相关。

        对于面向流的套接字,此套接字选项通常允许将多个侦听套接字绑定到同一地址和相同端口。

        对于面向数据报的套接字,套接字选项通常允许多个UDP套接字绑定到同一地址和端口。

        实现允许在绑定或连接套接字之前设置此套接字选项。 绑定套接字后更改此套接字选项的值无效。

        从以下版本开始:
        9
      • SO_LINGER

        public static final SocketOption<Integer> SO_LINGER
        如果数据存在,则关闭。

        此套接字选项的值是Integer ,它控制在套接字上排队未发送数据时所采取的操作,并调用关闭套接字的方法。 如果套接字选项的值为零或更大,则它表示超时值(以秒为单位),称为延迟间隔 close时间间隔是close方法在操作系统尝试传输未发送数据时阻止的超时,或者它确定无法传输数据。 如果套接字选项的值小于零,则禁用该选项。 在这种情况下, close方法不会等到发送未发送的数据; 如果可能,操作系统将在连接关闭之前传输任何未发送的数据。

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

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

        另请参见:
        Socket.setSoLinger(boolean, int)
      • IP_TOS

        public static final SocketOption<Integer> IP_TOS
        Internet协议(IP)标头中的服务类型(ToS)八位字节。

        此套接字选项的值是Integer表示套接字发送到IPv4套接字的IP数据包中的ToS八位字节的值。 ToS八位字节的解释是特定于网络的,并不是由此类定义的。 有关ToS八位字节的更多信息,请参见RFC 1349RFC 2474 套接字选项的值是一个提示 实现可以忽略该值,或忽略特定值。

        ToS八位字节中TOS字段的初始值/默认值是特定于实现的,但通常为0 对于面向数据报的套接字,可以在绑定套接字后随时配置该选项。 发送后续数据报时使用八位字节的新值。 在绑定套接字之前,是否可以查询或更改此选项取决于系统。

        此版本中未定义此面向流的套接字或IPv6套接字上的此套接字选项的行为。

        另请参见:
        DatagramSocket.setTrafficClass(int)
      • IP_MULTICAST_IF

        public static final SocketOption<NetworkInterface> IP_MULTICAST_IF
        Internet协议(IP)多播数据报的网络接口。

        此套接字选项的值为NetworkInterface ,表示面向数据报的套接字发送的多播数据报的传出接口。 对于IPv6套接字,则设置此选项是否还设置发送到IPv4地址的多播数据报的传出接口,这取决于系统。

        此套接字选项的初始值/默认值可以是null以指示操作系统将选择传出接口,通常基于网络路由表。 实现允许在绑定套接字后设置此套接字选项。 在绑定套接字之前是否可以查询或更改套接字选项取决于系统。

        另请参见:
        MulticastChannelMulticastSocket.setInterface(java.net.InetAddress)
      • IP_MULTICAST_TTL

        public static final SocketOption<Integer> IP_MULTICAST_TTL
        Internet协议(IP)多播数据报的生存时间

        此套接字选项的值为Integer ,范围为0 <= value <= 255 它用于控制面向数据报的套接字发送的组播数据报的范围。 对于IPv4套接字,该选项是套接字发送的多播数据报的生存时间(TTL)。 TTL为零的数据报不在网络上传输,但可以在本地传输。 对于IPv6套接字,该选项是跳限制 ,它是数据报在网络到期之前可以通过的跳数 对于IPv6套接字,它是否依赖于系统,该选项是否还设置发送到IPv4地址的多播数据报的生存时间。

        生存时间设置的初始值/默认值通常为1 实现允许在绑定套接字后设置此套接字选项。 在绑定套接字之前是否可以查询或更改套接字选项取决于系统。

        另请参见:
        MulticastChannelMulticastSocket.setTimeToLive(int)
      • IP_MULTICAST_LOOP

        public static final SocketOption<Boolean> IP_MULTICAST_LOOP
        Internet协议(IP)多播数据报的环回。

        此套接字选项的值是Boolean ,用于控制多播数据报的环回 socket选项的值表示是启用还是禁用该选项。

        此套接字选项的确切语义取决于系统。 特别是,无论环回是应用于从套接字发送还是由套接字接收的多播数据报,都依赖于系统。 对于IPv6套接字,则该选项是否也适用于发送到IPv4地址的多播数据报,这取决于系统。

        此套接字选项的初始值/默认值为TRUE 实现允许在绑定套接字后设置此套接字选项。 在绑定套接字之前是否可以查询或更改套接字选项取决于系统。

        另请参见:
        MulticastChannelMulticastSocket.setLoopbackMode(boolean)
      • TCP_NODELAY

        public static final SocketOption<Boolean> TCP_NODELAY
        禁用Nagle算法。

        此套接字选项的值为Boolean ,表示该选项是启用还是禁用。 套接字选项特定于使用TCP / IP协议的面向流的套接字。 TCP / IP使用称为The Nagle算法的算法来合并短段并提高网络效率。

        此套接字选项的默认值为FALSE 只有在已知合并影响性能的情况下,才应启用套接字选项。 可以随时启用套接字选项。 换句话说,可以禁用Nagle算法。 启用该选项后,它是否依赖于系统,是否可以随后禁用。 如果不能,则调用setOption方法禁用该选项无效。

        另请参见:
        RFC 1122: Requirements for Internet Hosts -- Communication LayersSocket.setTcpNoDelay(boolean)