Module  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状态时,此套接字选项通常将决定套接字是否可以绑定到套接字地址。 在语义不同的实现中,并且不需要启用套接字选项以便在先前连接处于此状态时绑定套接字,则实现可能会选择忽略此选项。

        对于面向数据报的套接字,套接字选项用于允许多个程序绑定到相同的地址。 当套接字用于互联网协议(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
        互联网协议(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
        互联网协议(IP)组播数据报的网络接口。

        此套接字选项的值为NetworkInterface ,表示由面向数据报的套接字发送的组播数据报的出站接口。 对于IPv6套接字,则依赖于系统是否设置此选项也设置发送到IPv4地址的组播数据报的出接口。

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

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

        public static final SocketOption<Integer> IP_MULTICAST_TTL
        互联网协议(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
        互联网协议(IP)组播数据报的环回。

        该套接字选项的值是一个Boolean ,它控制组播数据报的环回 套接字选项的值表示该选项是启用还是禁用。

        此套接字选项的确切语义与系统相关。 特别地,系统是否依赖于环回是否适用于从套接字发送或由套接字接收的组播数据报。 对于IPv6套接字,则系统依赖于该选项是否也适用于发送到IPv4地址的组播数据报。

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

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

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

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

        此套接字选项的默认值为FALSE 只有在已知聚结影响性能的情况下,才能启用套接字选项。 可以随时启用套接字选项。 换句话说,Nagle算法可以被禁用。 启用该选项后,系统是否可以随后禁用。 如果不能,那么调用setOption方法来禁用该选项就没有效果。

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