鸿蒙OS开发文档 鸿蒙OS StandardSocketOptions

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 2

StandardSocketOptions

java.lang.Object
|---java.net.StandardSocketOptions

public final class StandardSocketOptions
extends Object

定义标准套接字选项。

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

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

字段摘要

修饰符和类型字段描述
static SocketOptionNetworkInterfaceIP_MULTICAST_IFInternet 协议 (IP) 多播数据报的网络接口。
static SocketOptionBooleanIP_MULTICAST_LOOPInternet 协议 (IP) 多播数据报的环回。
static SocketOptionIntegerIP_MULTICAST_TTLInternet 协议 (IP) 多播数据报的time-to-live。
static SocketOptionIntegerIP_TOSInternet 协议 (IP) 标头中的服务类型 (ToS) 八位字节。
static SocketOptionBooleanSO_BROADCAST允许传输广播数据报。
static SocketOptionBooleanSO_KEEPALIVE保持连接活跃。
static SocketOptionIntegerSO_LINGER如果存在数据,则在关闭时逗留。
static SocketOptionIntegerSO_RCVBUF套接字接收缓冲区的大小。
static SocketOptionBooleanSO_REUSEADDR重用地址。
static SocketOptionIntegerSO_SNDBUF套接字发送缓冲区的大小。
static SocketOptionBooleanTCP_NODELAY禁用 Nagle 算法。

方法总结

从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

IP_MULTICAST_IF

public static final SocketOptionNetworkInterface IP_MULTICAST_IF

Internet 协议 (IP) 多播数据报的网络接口。

此套接字选项的值是一个 NetworkInterface,它表示由面向数据报的套接字发送的多播数据报的传出接口。 对于 StandardProtocolFamily#INET6 套接字,设置此选项是否还设置发送到 IPv4 地址的多播数据报的传出接口取决于系统。

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

IP_MULTICAST_LOOP

public static final SocketOptionBoolean IP_MULTICAST_LOOP

Internet 协议 (IP) 多播数据报的环回。

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

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

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

IP_MULTICAST_TTL

public static final SocketOptionInteger IP_MULTICAST_TTL

Internet 协议 (IP) 多播数据报的time-to-live。

这个socket选项的值是一个0 <= value <= 255范围内的Integer,用来控制面向数据报的socket发送的组播数据报的范围。在 StandardProtocolFamily#INET 套接字的情况下,该选项是套接字发送的多播数据报的生存时间 (TTL)。 TTL 为零的数据报不在网络上传输,但可以在本地传送。在 StandardProtocolFamily#INET6 套接字的情况下,该选项是跳数限制,即数据报在网络上过期之前可以通过的跳数。对于 IPv6 套接字,该选项是否还设置发送到 IPv4 地址的多播数据报的生存时间取决于系统。

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

IP_TOS

public static final SocketOptionInteger IP_TOS

Internet 协议 (IP) 标头中的服务类型 (ToS) 八位字节。

此套接字选项的值是一个整数,表示由套接字发送到 StandardProtocolFamily#INET 套接字的 IP 数据包中 ToS 八位字节的值。 ToS 八位字节的解释是特定于网络的,并且未由此类定义。关于 ToS 八位字节的更多信息可以在 RFC 1349 和 RFC 2474 中找到。套接字选项的值是一个提示。实现可能会忽略该值,或忽略特定值。

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

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

SO_BROADCAST

public static final SocketOptionBoolean SO_BROADCAST

允许传输广播数据报。

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

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

SO_KEEPALIVE

public static final SocketOptionBoolean SO_KEEPALIVE

保持连接活跃。

此套接字选项的值是一个布尔值,表示该选项是启用还是禁用。 当启用 SO_KEEPALIVE 选项时,操作系统可以使用保持活动机制来定期探测连接的另一端,而此时连接处于空闲状态。 保活机制的确切语义取决于系统,因此未指定。

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

SO_LINGER

public static final SocketOptionInteger SO_LINGER

如果存在数据,则在关闭时逗留。

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

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

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

SO_RCVBUF

public static final SocketOptionInteger SO_RCVBUF

套接字接收缓冲区的大小。

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

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

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

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

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

SO_REUSEADDR

public static final SocketOptionBoolean SO_REUSEADDR

重用地址。

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

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

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

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

SO_SNDBUF

public static final SocketOptionInteger SO_SNDBUF

套接字发送缓冲区的大小。

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

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

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

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

TCP_NODELAY

public static final SocketOptionBoolean TCP_NODELAY

禁用 Nagle 算法。

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

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