Module java.base
Package java.net

Class StandardSocketOptions

java.lang.Object
java.net.StandardSocketOptions

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

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

在此版本中,此处定义的套接字选项由channels包中的network通道使用。

自版本:
1.7
  • Field Details

    • SO_BROADCAST

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

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

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

      外部规范
      另请参阅:
    • SO_KEEPALIVE

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

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

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

      外部规范
      另请参阅:
    • SO_SNDBUF

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

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

      对于数据报导向套接字,发送缓冲区的大小可能限制可以由套接字发送的数据报的大小。是否发送或丢弃大于缓冲区大小的数据报取决于系统。

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

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

      另请参阅:
    • SO_RCVBUF

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

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

      对于数据报导向套接字,接收缓冲区的大小可能限制可以接收的数据报的大小。是否可以接收大于缓冲区大小的数据报取决于系统。增加套接字接收缓冲区对于数据报以比处理速度更快的速度到达的情况可能很重要。

      对于面向流的套接字和TCP/IP协议,套接字接收缓冲区的大小可能在向远程对等方广告TCP接收窗口的大小时使用。

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

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

      外部规范
      另请参阅:
    • SO_REUSEADDR

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

      此套接字选项的值是一个表示选项是启用还是禁用的Boolean。此套接字选项的确切语义取决于套接字类型和系统。

      对于面向流的套接字,此套接字选项通常确定当先前涉及该套接字地址的连接处于TIME_WAIT状态时,是否可以将套接字绑定到套接字地址。在语义不同且不需要启用套接字选项以绑定套接字的实现中,当先前的连接处于此状态时,实现可能选择忽略此选项。

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

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

      外部规范
      另请参阅:
    • SO_REUSEPORT

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

      此套接字选项的值是一个表示选项是启用还是禁用的Boolean。此套接字选项的确切语义取决于套接字类型和系统。

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

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

      实现允许在套接字绑定或连接之前设置此套接字选项。在套接字绑定后更改此套接字选项的值不会产生任何效果。

      自版本:
      9
    • SO_LINGER

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

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

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

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

      参见:
    • IP_TOS

      public static final SocketOption<Integer> IP_TOS
      互联网协议(IP)头部中的服务类型(ToS)字节。

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

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

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

      外部规范
      参见:
    • IP_MULTICAST_IF

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

      此套接字选项的值是表示数据报导向套接字发送的多播数据报的出口接口的NetworkInterface。对于IPv6套接字,设置此选项是否还设置发送到IPv4地址的多播数据报的出口接口是系统相关的。

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

      参见:
    • IP_MULTICAST_TTL

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

      此套接字选项的值是范围为0 <= value <= 255的整数。它用于控制数据报导向套接字发送的多播数据报的范围。对于IPv4套接字,该选项是套接字发送的多播数据报的生存时间(TTL)。具有零TTL的数据报不会在网络上传输,但可能会在本地传递。对于IPv6套接字,该选项是“跳数”,即数据报在到期之前可以通过的跳数。对于IPv6套接字,系统相关的是该选项是否还设置发送到IPv4地址的多播数据报的生存时间。

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

      参见:
    • IP_MULTICAST_LOOP

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

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

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

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

      参见:
    • TCP_NODELAY

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

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

      此套接字选项的默认值为FALSE。只有在已知合并影响性能的情况下才应启用套接字选项。可以在任何时间启用套接字选项。换句话说,可以禁用Nagle算法。一旦启用该选项,系统相关的是是否可以随后禁用该选项。如果不能,则调用setOption方法以禁用该选项将不起作用。

      外部规范
      参见: