鴻蒙OS StandardSocketOptions

2022-06-14 15:13 更新

StandardSocketOptions

java.lang.Object

|---java.net.StandardSocketOptions

public final class StandardSocketOptions
extends Object

定義標(biāo)準(zhǔn)套接字選項(xiàng)。

此類定義的每個(gè)套接字選項(xiàng)的 SocketOption#name 是其字段名稱。

在此版本中,此處定義的套接字選項(xiàng)由 channels 包中的網(wǎng)絡(luò)通道使用。

字段摘要

修飾符和類型 字段 描述
static SocketOptionNetworkInterface IP_MULTICAST_IF Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的網(wǎng)絡(luò)接口。
static SocketOptionBoolean IP_MULTICAST_LOOP Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的環(huán)回。
static SocketOptionInteger IP_MULTICAST_TTL Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的time-to-live。
static SocketOptionInteger IP_TOS Internet 協(xié)議 (IP) 標(biāo)頭中的服務(wù)類型 (ToS) 八位字節(jié)。
static SocketOptionBoolean SO_BROADCAST 允許傳輸廣播數(shù)據(jù)報(bào)。
static SocketOptionBoolean SO_KEEPALIVE 保持連接活躍。
static SocketOptionInteger SO_LINGER 如果存在數(shù)據(jù),則在關(guān)閉時(shí)逗留。
static SocketOptionInteger SO_RCVBUF 套接字接收緩沖區(qū)的大小。
static SocketOptionBoolean SO_REUSEADDR 重用地址。
static SocketOptionInteger SO_SNDBUF 套接字發(fā)送緩沖區(qū)的大小。
static SocketOptionBoolean TCP_NODELAY 禁用 Nagle 算法。

方法總結(jié)

從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

IP_MULTICAST_IF

public static final SocketOptionNetworkInterface IP_MULTICAST_IF

Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的網(wǎng)絡(luò)接口。

此套接字選項(xiàng)的值是一個(gè) NetworkInterface,它表示由面向數(shù)據(jù)報(bào)的套接字發(fā)送的多播數(shù)據(jù)報(bào)的傳出接口。 對(duì)于 StandardProtocolFamily#INET6 套接字,設(shè)置此選項(xiàng)是否還設(shè)置發(fā)送到 IPv4 地址的多播數(shù)據(jù)報(bào)的傳出接口取決于系統(tǒng)。

此套接字選項(xiàng)的初始/默認(rèn)值可能為空,表示操作系統(tǒng)將選擇傳出接口,通?;诰W(wǎng)絡(luò)路由表。 一個(gè)實(shí)現(xiàn)允許在綁定套接字之后設(shè)置此套接字選項(xiàng)。 在綁定套接字之前是否可以查詢或更改套接字選項(xiàng)取決于系統(tǒng)。

IP_MULTICAST_LOOP

public static final SocketOptionBoolean IP_MULTICAST_LOOP

Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的環(huán)回。

此套接字選項(xiàng)的值是一個(gè)布爾值,用于控制多播數(shù)據(jù)報(bào)的環(huán)回。 套接字選項(xiàng)的值表示該選項(xiàng)是啟用還是禁用。

此套接字選項(xiàng)的確切語(yǔ)義取決于系統(tǒng)。 特別是,環(huán)回是否適用于從套接字發(fā)送或由套接字接收的多播數(shù)據(jù)報(bào)取決于系統(tǒng)。 對(duì)于 StandardProtocolFamily#INET6 套接字,該選項(xiàng)是否也適用于發(fā)送到 IPv4 地址的多播數(shù)據(jù)報(bào)取決于系統(tǒng)。

此套接字選項(xiàng)的初始/默認(rèn)值為 TRUE。 一個(gè)實(shí)現(xiàn)允許在綁定套接字之后設(shè)置此套接字選項(xiàng)。 在綁定套接字之前是否可以查詢或更改套接字選項(xiàng)取決于系統(tǒng)。

IP_MULTICAST_TTL

public static final SocketOptionInteger IP_MULTICAST_TTL

Internet 協(xié)議 (IP) 多播數(shù)據(jù)報(bào)的time-to-live。

這個(gè)socket選項(xiàng)的值是一個(gè)0 <= value <= 255范圍內(nèi)的Integer,用來(lái)控制面向數(shù)據(jù)報(bào)的socket發(fā)送的組播數(shù)據(jù)報(bào)的范圍。在 StandardProtocolFamily#INET 套接字的情況下,該選項(xiàng)是套接字發(fā)送的多播數(shù)據(jù)報(bào)的生存時(shí)間 (TTL)。 TTL 為零的數(shù)據(jù)報(bào)不在網(wǎng)絡(luò)上傳輸,但可以在本地傳送。在 StandardProtocolFamily#INET6 套接字的情況下,該選項(xiàng)是跳數(shù)限制,即數(shù)據(jù)報(bào)在網(wǎng)絡(luò)上過(guò)期之前可以通過(guò)的跳數(shù)。對(duì)于 IPv6 套接字,該選項(xiàng)是否還設(shè)置發(fā)送到 IPv4 地址的多播數(shù)據(jù)報(bào)的生存時(shí)間取決于系統(tǒng)。

生存時(shí)間設(shè)置的初始/默認(rèn)值通常為 1。實(shí)現(xiàn)允許在綁定套接字后設(shè)置此套接字選項(xiàng)。在綁定套接字之前是否可以查詢或更改套接字選項(xiàng)取決于系統(tǒng)。

IP_TOS

public static final SocketOptionInteger IP_TOS

Internet 協(xié)議 (IP) 標(biāo)頭中的服務(wù)類型 (ToS) 八位字節(jié)。

此套接字選項(xiàng)的值是一個(gè)整數(shù),表示由套接字發(fā)送到 StandardProtocolFamily#INET 套接字的 IP 數(shù)據(jù)包中 ToS 八位字節(jié)的值。 ToS 八位字節(jié)的解釋是特定于網(wǎng)絡(luò)的,并且未由此類定義。關(guān)于 ToS 八位字節(jié)的更多信息可以在 RFC 1349 和 RFC 2474 中找到。套接字選項(xiàng)的值是一個(gè)提示。實(shí)現(xiàn)可能會(huì)忽略該值,或忽略特定值。

ToS 字節(jié)中 TOS 字段的初始/默認(rèn)值是特定于實(shí)現(xiàn)的,但通常為 0。對(duì)于面向數(shù)據(jù)報(bào)的套接字,可以在綁定套接字后的任何時(shí)間配置該選項(xiàng)。發(fā)送后續(xù)數(shù)據(jù)報(bào)時(shí)使用八位字節(jié)的新值。在綁定套接字之前是否可以查詢或更改此選項(xiàng)取決于系統(tǒng)。

此版本中未定義此套接字選項(xiàng)在面向流的套接字或 StandardProtocolFamily#INET6 套接字上的行為。

SO_BROADCAST

public static final SocketOptionBoolean SO_BROADCAST

允許傳輸廣播數(shù)據(jù)報(bào)。

此套接字選項(xiàng)的值是一個(gè)布爾值,表示該選項(xiàng)是啟用還是禁用。 該選項(xiàng)特定于發(fā)送到 IPv4 廣播地址的面向數(shù)據(jù)報(bào)的套接字。 當(dāng)啟用套接字選項(xiàng)時(shí),套接字可用于發(fā)送廣播數(shù)據(jù)報(bào)。

此套接字選項(xiàng)的初始值為 FALSE。 可以隨時(shí)啟用或禁用套接字選項(xiàng)。 某些操作系統(tǒng)可能要求以實(shí)現(xiàn)特定權(quán)限啟動(dòng) Java 虛擬機(jī)以啟用此選項(xiàng)或發(fā)送廣播數(shù)據(jù)報(bào)。

SO_KEEPALIVE

public static final SocketOptionBoolean SO_KEEPALIVE

保持連接活躍。

此套接字選項(xiàng)的值是一個(gè)布爾值,表示該選項(xiàng)是啟用還是禁用。 當(dāng)啟用 SO_KEEPALIVE 選項(xiàng)時(shí),操作系統(tǒng)可以使用保持活動(dòng)機(jī)制來(lái)定期探測(cè)連接的另一端,而此時(shí)連接處于空閑狀態(tài)。 ?;顧C(jī)制的確切語(yǔ)義取決于系統(tǒng),因此未指定。

此套接字選項(xiàng)的初始值為 FALSE。 可以隨時(shí)啟用或禁用套接字選項(xiàng)。

SO_LINGER

public static final SocketOptionInteger SO_LINGER

如果存在數(shù)據(jù),則在關(guān)閉時(shí)逗留。

這個(gè)套接字選項(xiàng)的值是一個(gè)整數(shù),它控制當(dāng)未發(fā)送的數(shù)據(jù)在套接字上排隊(duì)并調(diào)用關(guān)閉套接字的方法時(shí)所采取的操作。如果套接字選項(xiàng)的值為零或更大,則它表示超時(shí)值,以秒為單位,稱為延遲間隔。延遲間隔是關(guān)閉方法在操作系統(tǒng)嘗試傳輸未發(fā)送的數(shù)據(jù)或它決定無(wú)法傳輸數(shù)據(jù)時(shí)阻塞的超時(shí)時(shí)間。如果套接字選項(xiàng)的值小于零,則該選項(xiàng)被禁用。在這種情況下,close 方法不會(huì)等到傳輸未發(fā)送的數(shù)據(jù);如果可能,操作系統(tǒng)將在連接關(guān)閉之前傳輸任何未發(fā)送的數(shù)據(jù)。

此套接字選項(xiàng)僅用于在阻塞模式下配置的套接字。未定義在非阻塞套接字上啟用此選項(xiàng)時(shí)關(guān)閉方法的行為。

此套接字選項(xiàng)的初始值為負(fù)值,表示該選項(xiàng)被禁用。可以隨時(shí)啟用該選項(xiàng)或更改逗留間隔。逗留間隔的最大值取決于系統(tǒng)。將延遲間隔設(shè)置為大于其最大值的值會(huì)導(dǎo)致延遲間隔設(shè)置為其最大值。

SO_RCVBUF

public static final SocketOptionInteger SO_RCVBUF

套接字接收緩沖區(qū)的大小。

此套接字選項(xiàng)的值是一個(gè)整數(shù),它是套接字接收緩沖區(qū)的大小(以字節(jié)為單位)。套接字接收緩沖區(qū)是網(wǎng)絡(luò)實(shí)現(xiàn)使用的輸入緩沖區(qū)。對(duì)于大容量連接,可能需要增加或減少以限制傳入數(shù)據(jù)的可能積壓。 socket 選項(xiàng)的值是實(shí)現(xiàn)緩沖區(qū)大小的提示,實(shí)際大小可能不同。

對(duì)于面向數(shù)據(jù)報(bào)的套接字,接收緩沖區(qū)的大小可能會(huì)限制可以接收的數(shù)據(jù)報(bào)的大小。是否可以接收大于緩沖區(qū)大小的數(shù)據(jù)報(bào)取決于系統(tǒng)。對(duì)于數(shù)據(jù)報(bào)以突發(fā)方式到達(dá)的速度快于處理速度的情況,增加套接字接收緩沖區(qū)可能很重要。

在面向流的套接字和 TCP/IP 協(xié)議的情況下,當(dāng)向遠(yuǎn)程對(duì)等方通告 TCP 接收窗口的大小時(shí),可以使用套接字接收緩沖區(qū)的大小。

套接字接收緩沖區(qū)的初始/默認(rèn)大小和允許值的范圍取決于系統(tǒng),盡管不允許使用負(fù)大小。嘗試將套接字接收緩沖區(qū)設(shè)置為大于其最大大小會(huì)導(dǎo)致其設(shè)置為最大大小。

實(shí)現(xiàn)允許在綁定或連接套接字之前設(shè)置此套接字選項(xiàng)。實(shí)現(xiàn)是否允許在綁定套接字后更改套接字接收緩沖區(qū)取決于系統(tǒng)。

SO_REUSEADDR

public static final SocketOptionBoolean SO_REUSEADDR

重用地址。

此套接字選項(xiàng)的值是一個(gè)布爾值,表示該選項(xiàng)是啟用還是禁用。此套接字選項(xiàng)的確切語(yǔ)義取決于套接字類型和系統(tǒng)。

在面向流的套接字的情況下,此套接字選項(xiàng)通常將確定當(dāng)涉及該套接字地址的先前連接處于 TIME_WAIT 狀態(tài)時(shí),該套接字是否可以綁定到該套接字地址。在語(yǔ)義不同的實(shí)現(xiàn)上,并且當(dāng)先前的連接處于此狀態(tài)時(shí),不需要啟用套接字選項(xiàng)以綁定套接字,則實(shí)現(xiàn)可以選擇忽略此選項(xiàng)。

對(duì)于面向數(shù)據(jù)報(bào)的套接字,套接字選項(xiàng)用于允許多個(gè)程序綁定到同一個(gè)地址。當(dāng)套接字用于 Internet 協(xié)議 (IP) 多播時(shí),應(yīng)啟用此選項(xiàng)。

實(shí)現(xiàn)允許在綁定或連接套接字之前設(shè)置此套接字選項(xiàng)。綁定套接字后更改此套接字選項(xiàng)的值無(wú)效。此套接字選項(xiàng)的默認(rèn)值取決于系統(tǒng)。

SO_SNDBUF

public static final SocketOptionInteger SO_SNDBUF

套接字發(fā)送緩沖區(qū)的大小。

此套接字選項(xiàng)的值是一個(gè)整數(shù),它是套接字發(fā)送緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。套接字發(fā)送緩沖區(qū)是網(wǎng)絡(luò)實(shí)現(xiàn)使用的輸出緩沖區(qū)。對(duì)于大容量連接,可能需要增加它。 socket 選項(xiàng)的值是實(shí)現(xiàn)緩沖區(qū)大小的提示,實(shí)際大小可能不同。可以查詢套接字選項(xiàng)以檢索實(shí)際大小。

對(duì)于面向數(shù)據(jù)報(bào)的套接字,發(fā)送緩沖區(qū)的大小可能會(huì)限制套接字可能發(fā)送的數(shù)據(jù)報(bào)的大小。是否發(fā)送或丟棄大于緩沖區(qū)大小的數(shù)據(jù)報(bào)取決于系統(tǒng)。

套接字發(fā)送緩沖區(qū)的初始/默認(rèn)大小和允許值的范圍取決于系統(tǒng),盡管不允許使用負(fù)大小。嘗試將套接字發(fā)送緩沖區(qū)設(shè)置為大于其最大大小會(huì)導(dǎo)致其設(shè)置為最大大小。

實(shí)現(xiàn)允許在綁定或連接套接字之前設(shè)置此套接字選項(xiàng)。實(shí)現(xiàn)是否允許在綁定套接字后更改套接字發(fā)送緩沖區(qū)取決于系統(tǒng)。

TCP_NODELAY

public static final SocketOptionBoolean TCP_NODELAY

禁用 Nagle 算法。

此套接字選項(xiàng)的值是一個(gè)布爾值,表示該選項(xiàng)是啟用還是禁用。 套接字選項(xiàng)特定于使用 TCP/IP 協(xié)議的面向流的套接字。 TCP/IP 使用一種稱為 Nagle 算法的算法來(lái)合并短段并提高網(wǎng)絡(luò)效率。

此套接字選項(xiàng)的默認(rèn)值為 FALSE。 只有在已知合并會(huì)影響性能的情況下才應(yīng)啟用套接字選項(xiàng)。 可以隨時(shí)啟用套接字選項(xiàng)。 換句話說(shuō),可以禁用 Nagle 算法。 啟用該選項(xiàng)后,是否可以隨后禁用它取決于系統(tǒng)。 如果不能,則調(diào)用 setOption 方法禁用該選項(xiàng)無(wú)效。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)