模块 java.base
 java.net

类 StandardSocketOptions

java.lang.Object
java.net.StandardSocketOptions

public final class StandardSocketOptions extends Object
定义 standard 套接字选项。

该类定义的每个套接字选项的name 为其字段名。

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

自从:
1.7
  • 字段详细信息

    • SO_BROADCAST

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

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

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

      参见:
    • SO_KEEPALIVE

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

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

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

      参见:
    • SO_SNDBUF

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

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

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

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

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

      参见:
    • SO_RCVBUF

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

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

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

      在面向流的套接字和 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,它控制当未发送的数据在套接字上排队并调用关闭套接字的方法时采取的操作。如果套接字选项的值为零或更大,则它表示超时值(以秒为单位),称为 linger interval 。逗留时间间隔是 close 方法在操作系统尝试传输未发送的数据或决定无法传输数据时阻塞的超时时间。如果套接字选项的值小于零,则该选项被禁用。在那种情况下,close 方法不会等到未发送的数据被传输;如果可能,操作系统将在连接关闭之前传输任何未发送的数据。

      此套接字选项旨在与仅在 blocking 模式下配置的套接字一起使用。未定义在非阻塞套接字上启用此选项时 close 方法的行为。

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

      参见:
    • IP_TOS

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

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

      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
      time-to-live 用于 Internet 协议 (IP) 多播数据报。

      此套接字选项的值是 0 <= value <= 255 范围内的 Integer。它用于控制面向数据报的套接字发送的多播数据报的范围。在 IPv4 套接字的情况下,选项是套接字发送的多播数据报的生存时间 (TTL)。 TTL 为零的数据报不在网络上传输,但可以在本地传递。在 IPv6 套接字的情况下,选项是 hop limit,它是数据报在网络上过期之前可以通过的 hops 的编号。对于 IPv6 套接字,该选项是否还在发送到 IPv4 地址的多播数据报上设置 time-to-live 取决于系统。

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

      参见:
    • IP_MULTICAST_LOOP

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

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

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

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

      参见:
    • TCP_NODELAY

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

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

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

      参见: