Module jdk.net
Package jdk.net

Class ExtendedSocketOptions

java.lang.Object
jdk.net.ExtendedSocketOptions

public final class ExtendedSocketOptions extends Object
定义了扩展的套接字选项,超出了在StandardSocketOptions中定义的选项。这些选项可能是特定于平台的。
自 JDK 版本:
1.8
  • Field Details

    • TCP_QUICKACK

      public static final SocketOption<Boolean> TCP_QUICKACK
      禁用延迟确认。

      此套接字选项可用于减少或禁用延迟确认(ACK)。启用 TCP_QUICKACK 后,ACK 将立即发送,而不是根据正常 TCP 操作需要延迟发送。此选项不是永久性的,它只能在 TCP_QUICKACK 模式之间切换。随后的 TCP 协议操作将根据内部协议处理和延迟 ACK 超时等因素再次禁用/启用 TCP_QUICKACK 模式,因此需要在每次对给定套接字执行 TCP 操作后使用 setOption 设置此选项。

      此套接字选项的值是一个表示选项启用或禁用的 Boolean。此套接字选项特定于使用 TCP/IP 协议的面向流的套接字。此套接字选项的确切语义取决于套接字类型和系统。

      自 JDK 版本:
      10
    • TCP_KEEPIDLE

      public static final SocketOption<Integer> TCP_KEEPIDLE
      保持活动状态的空闲时间。

      此套接字选项的值是一个表示在保持活动状态之前空闲时间的 Integer。此套接字选项特定于使用 TCP/IP 协议的面向流的套接字。此套接字选项的确切语义取决于系统。

      当启用 SO_KEEPALIVE 选项时,TCP 会探测一段时间空闲的连接。此空闲期的默认值取决于系统,但通常为 2 小时。 TCP_KEEPIDLE 选项可用于影响给定套接字的此值。

      自 JDK 版本:
      11
    • TCP_KEEPINTERVAL

      public static final SocketOption<Integer> TCP_KEEPINTERVAL
      保持活动状态的重传间隔时间。

      此套接字选项的值是一个表示在重新发送保持活动探测之前等待的时间(以秒为单位)的 Integer。此套接字选项特定于使用 TCP/IP 协议的面向流的套接字。此套接字选项的确切语义取决于系统。

      当启用 SO_KEEPALIVE 选项时,TCP 会探测一段时间空闲的连接。如果远程系统不响应保持活动探测,TCP 将在一段时间后重新发送探测。此重传间隔的默认值取决于系统,但通常为 75 秒。 TCP_KEEPINTERVAL 选项可用于影响给定套接字的此值。

      自 JDK 版本:
      11
    • TCP_KEEPCOUNT

      public static final SocketOption<Integer> TCP_KEEPCOUNT
      保持活动状态的最大重传限制。

      此套接字选项的值是一个表示要发送的最大保持活动探测次数的 Integer。此套接字选项特定于使用 TCP/IP 协议的面向流的套接字。此套接字选项的确切语义取决于系统。

      当启用 SO_KEEPALIVE 选项时,TCP 会探测一段时间空闲的连接。如果远程系统不响应保持活动探测,TCP 在连接被视为中断之前重新发送探测一定次数。此保持活动探测重传限制的默认值取决于系统,但通常为 8。 TCP_KEEPCOUNT 选项可用于影响给定套接字的此值。

      自 JDK 版本:
      11
    • SO_INCOMING_NAPI_ID

      public static final SocketOption<Integer> SO_INCOMING_NAPI_ID
      标识套接字接收的最后一个传入数据包所在的接收队列。

      此套接字选项的值是一个正整数 Integer,用于标识应用程序可以根据队列标识符将传入流分配给线程的接收队列。当套接字未绑定、未接收到数据包或更一般地说,没有接收队列可供标识时,该值为 0。此套接字选项受面向流和面向数据报的套接字支持。

      此套接字选项是只读的,尝试设置套接字选项将引发 SocketException

      API 注意:
      网络设备可能具有多个队列或通道用于传输和接收网络数据包。 SO_INCOMING_NAPI_ID 套接字选项为应用程序提供了一个提示,指示传入套接字连接或该连接的数据包被定向到的接收队列。应用程序可以通过在一个线程上处理分配给特定队列的所有套接字连接来利用此功能。
      自 JDK 版本:
      15
    • SO_PEERCRED

      public static final SocketOption<UnixDomainPrincipal> SO_PEERCRED
      Unix 域对等凭据。

      此套接字选项的值是一个表示连接到 Unix 域套接字的对等方凭据的 UnixDomainPrincipal。这些凭据是在套接字首次连接或接受时应用的凭据。

      此套接字选项是只读的,尝试设置套接字选项将引发 SocketException。在尝试获取未连接的 Unix 域套接字的套接字选项值时也会引发 SocketException

      自 JDK 版本:
      16
    • IP_DONTFRAGMENT

      public static final SocketOption<Boolean> IP_DONTFRAGMENT
      禁用 IP 数据包分片。

      此套接字选项的值是一个表示选项启用或禁用的 Boolean。当为 true 时,不会对传出的 IPv4 和 IPv6 数据包进行分片。此选项仅适用于数据报套接字。设置时,必须注意限制传出数据包的大小为 本地 MTU。根据实现和网络接口的不同,大于 MTU 的数据包可能会被发送、静默丢弃或引发异常。对于 IPv6 套接字,选项是否也适用于发送到 IPv4 地址的数据报取决于系统。

      API 注意:
      对于 IPv4,此选项在 IP 数据包头中设置 DF(Do not Fragment)标志。这指示中间路由器不要对数据包进行分片。IPv6 路由器永远不会对数据包进行分片。相反,分片仅由发送和接收节点独立处理。为 IPv6 套接字设置此选项可确保要发送的数据包永远不会被分片,此时必须遵守本地网络 MTU。