新聞中心
Socket

分宜網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
java.lang.Object
|---java.net.Socket
public class Socket
extends Object
implements Closeable此類實(shí)現(xiàn)客戶端套接字(也稱為“套接字”)。 套接字是兩臺(tái)機(jī)器之間通信的端點(diǎn)。
套接字的實(shí)際工作由 SocketImpl 類的實(shí)例執(zhí)行。 應(yīng)用程序通過(guò)更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠,可以將自己配置為創(chuàng)建適合本地防火墻的套接字。
構(gòu)造函數(shù)摘要
| 修飾符 | 構(gòu)造函數(shù) | 描述 |
|---|---|---|
| Socket() | 創(chuàng)建一個(gè)未連接的套接字,系統(tǒng)默認(rèn)類型為 SocketImpl。 | |
| Socket(String host, int port) | 創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號(hào)。 | |
| Socket(String host, int port, boolean stream) | 已棄用。 使用 DatagramSocket 代替 UDP 傳輸。 | |
| Socket(String host, int port, InetAddress localAddr, int localPort) | 創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程端口上的指定遠(yuǎn)程主機(jī)。 | |
| Socket(InetAddress address, int port) | 創(chuàng)建一個(gè)流套接字并將其連接到指定 IP 地址的指定端口號(hào)。 | |
| Socket(InetAddress host, int port, boolean stream) | 已棄用。 使用 DatagramSocket 代替 UDP 傳輸。 | |
| Socket(InetAddress address, int port, InetAddress localAddr, int localPort) | 創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程端口上的指定遠(yuǎn)程地址。 | |
| Socket(Proxy proxy) | 創(chuàng)建一個(gè)未連接的套接字,指定代理的類型(如果有),無(wú)論任何其他設(shè)置如何,都應(yīng)使用該類型。 | |
| protected | Socket(SocketImpl impl) | 使用用戶指定的 SocketImpl 創(chuàng)建一個(gè)未連接的 Socket。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| void | bind(SocketAddress bindpoint) | 將套接字綁定到本地地址。 |
| void | close() | 關(guān)閉此套接字。 |
| void | connect(SocketAddress endpoint) | 將此套接字連接到服務(wù)器。 |
| void | connect(SocketAddress endpoint, int timeout) | 將此套接字連接到具有指定超時(shí)值的服務(wù)器。 |
| SocketChannel | getChannel() | 返回與此套接字關(guān)聯(lián)的唯一 SocketChannel 對(duì)象(如果有)。 |
| InetAddress | getInetAddress() | 返回套接字連接的地址。 |
| InputStream | getInputStream() | 返回此套接字的輸入流。 |
| boolean | getKeepAlive() | 測(cè)試是否啟用了 SocketOptions#SO_KEEPALIVE。 |
| InetAddress | getLocalAddress() | 獲取套接字綁定的本地地址。 |
| int | getLocalPort() | 返回此套接字綁定到的本地端口號(hào)。 |
| SocketAddress | getLocalSocketAddress() | 返回此套接字綁定到的端點(diǎn)的地址。 |
| boolean | getOOBInline() | 測(cè)試是否啟用了 SocketOptions#SO_OOBINLINE。 |
| OutputStream | getOutputStream() | 返回此套接字的輸出流。 |
| int | getPort() | 返回此套接字連接到的遠(yuǎn)程端口號(hào)。 |
| int | getReceiveBufferSize() | 獲取此 Socket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值,即平臺(tái)用于在此 Socket 上輸入的緩沖區(qū)大小。 |
| SocketAddress | getRemoteSocketAddress() | 返回此套接字連接到的端點(diǎn)的地址,如果未連接,則返回 null。 |
| boolean | getReuseAddress() | 測(cè)試 SocketOptions#SO_REUSEADDR 是否啟用。 |
| int | getSendBufferSize() | 獲取此 Socket 的 SocketOptions#SO_SNDBUF 選項(xiàng)的值,即平臺(tái)用于在此 Socket 上輸出的緩沖區(qū)大小。 |
| int | getSoLinger() | 返回 SocketOptions#SO_LINGER 的設(shè)置。 |
| int | getSoTimeout() | 返回 SocketOptions#SO_TIMEOUT 的設(shè)置。 |
| boolean | getTcpNoDelay() | 測(cè)試是否啟用了 SocketOptions#TCP_NODELAY。 |
| int | getTrafficClass() | 獲取從此 Socket 發(fā)送的數(shù)據(jù)包的 IP 標(biāo)頭中的流量類別或服務(wù)類型 |
| boolean | isBound() | 返回套接字的綁定狀態(tài)。 |
| boolean | isClosed() | 返回套接字的關(guān)閉狀態(tài)。 |
| boolean | isConnected() | 返回套接字的連接狀態(tài)。 |
| boolean | isInputShutdown() | 返回套接字連接的讀半部分是否關(guān)閉。 |
| boolean | isOutputShutdown() | 返回套接字連接的寫半部分是否關(guān)閉。 |
| void | sendUrgentData(int data) | 在套接字上發(fā)送一個(gè)字節(jié)的緊急數(shù)據(jù)。 |
| void | setKeepAlive(boolean on) | 啟用/禁用 SocketOptions#SO_KEEPALIVE。 |
| void | setOOBInline(boolean on) | 啟用/禁用 SocketOptions#SO_OOBINLINE(接收 TCP 緊急數(shù)據(jù)) 默認(rèn)情況下,禁用此選項(xiàng),并且在套接字上接收到的 TCP 緊急數(shù)據(jù)被靜默丟棄。 |
| void | setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 設(shè)置此套接字的性能首選項(xiàng)。 |
| void | setReceiveBufferSize(int size) | 將 SocketOptions#SO_RCVBUF 選項(xiàng)設(shè)置為此 Socket 的指定值。 |
| void | setReuseAddress(boolean on) | 啟用/禁用 SocketOptions#SO_REUSEADDR 套接字選項(xiàng)。 |
| void | setSendBufferSize(int size) | 將 SocketOptions#SO_SNDBUF 選項(xiàng)設(shè)置為此 Socket 的指定值。 |
| static void | setSocketImplFactory(SocketImplFactory fac) | 為應(yīng)用程序設(shè)置客戶端套接字實(shí)現(xiàn)工廠。 |
| void | setSoLinger(boolean on, int linger) | 使用指定的延遲時(shí)間(以秒為單位)啟用/禁用 SocketOptions#SO_LINGER。 |
| void | setSoTimeout(int timeout) | 使用指定的超時(shí)啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。 |
| void | setTcpNoDelay(boolean on) | 啟用/禁用 SocketOptions#TCP_NODELAY(禁用/啟用 Nagle 算法)。 |
| void | setTrafficClass(int tc) | 為從此 Socket 發(fā)送的數(shù)據(jù)包設(shè)置 IP 標(biāo)頭中的流量類別或服務(wù)類型八位字節(jié)。 |
| void | shutdownInput() | 將此套接字的輸入流放在“流的末尾”。 |
| void | shutdownOutput() | 禁用此套接字的輸出流。 |
| String | toString() | 將此套接字轉(zhuǎn)換為字符串。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
構(gòu)造函數(shù)詳細(xì)信息
Socket
public Socket()
創(chuàng)建一個(gè)未連接的套接字,系統(tǒng)默認(rèn)類型為 SocketImpl。
Socket
public Socket(Proxy proxy)
創(chuàng)建一個(gè)未連接的套接字,指定代理的類型(如果有),無(wú)論任何其他設(shè)置如何,都應(yīng)使用該類型。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用代理主機(jī)地址和端口號(hào)作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
例子:
- Socket s = new Socket(Proxy.NO_PROXY); 將創(chuàng)建一個(gè)普通套接字,忽略任何其他代理配置。
- Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080))); 將創(chuàng)建一個(gè)通過(guò)指定的 SOCKS 代理服務(wù)器連接的套接字。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| proxy | 指定應(yīng)使用哪種代理的代理對(duì)象。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果代理的類型無(wú)效或?yàn)榭铡?/td> |
| SecurityException | 如果存在安全管理器并且拒絕連接到代理的權(quán)限。 |
Socket
protected Socket(SocketImpl impl) throws SocketException
使用用戶指定的 SocketImpl 創(chuàng)建一個(gè)未連接的 Socket。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| impl | 子類希望在 Socket 上使用的 SocketImpl 的實(shí)例。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
| SecurityException | 如果 impl 不為 null 并且設(shè)置了安全管理器,并且其 checkPermission 方法不允許 NetPermission("setSocketImpl")。 |
Socket
public Socket(String host, int port) throws IOException, UnknownHostException
創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號(hào)。
如果指定的主機(jī)為空,則相當(dāng)于將地址指定為 InetAddress.getByName(null)。 也就是說(shuō),相當(dāng)于指定了loopback接口的地址。
如果應(yīng)用程序指定了服務(wù)器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。 否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用主機(jī)地址和端口作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 主機(jī)名,或 null 用于環(huán)回地址。 |
| port | 端口號(hào)。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| UnknownHostException | 如果無(wú)法確定主機(jī)的 IP 地址。 |
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作。 |
| IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
Socket
public Socket(InetAddress address, int port) throws IOException
創(chuàng)建一個(gè)流套接字并將其連接到指定 IP 地址的指定端口號(hào)。
如果應(yīng)用程序指定了套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。 否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用主機(jī)地址和端口作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| address | IP 地址。 |
| port | 端口號(hào)。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作。 |
| IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
| NullPointerException | 如果地址為空。 |
Socket
public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程端口上的指定遠(yuǎn)程主機(jī)。 Socket 還將 bind() 到提供的本地地址和端口。
如果指定的主機(jī)為空,則相當(dāng)于將地址指定為 InetAddress.getByName(null)。 也就是說(shuō),相當(dāng)于指定了loopback接口的地址。
本地端口號(hào)為零將使系統(tǒng)在綁定操作中選擇一個(gè)空閑端口。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用主機(jī)地址和端口作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 遠(yuǎn)程主機(jī)的名稱,或 null 為環(huán)回地址。 |
| port | 遠(yuǎn)程端口 |
| localAddr | 套接字綁定到的本地地址,或者對(duì)于 anyLocal 地址為 null。 |
| localPort | 套接字綁定到的本地端口,或者系統(tǒng)選擇的空閑端口為零。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果安全管理器存在并且它的 checkConnect 方法不允許連接到目標(biāo),或者它的 checkListen 方法不允許綁定到本地端口。 |
| IllegalArgumentException | 如果 port 參數(shù)或 localPort 參數(shù)超出指定的有效端口值范圍,即 0 到 65535 之間,包括 0 和 65535。 |
Socket
public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程端口上的指定遠(yuǎn)程地址。 Socket 還將 bind() 到提供的本地地址和端口。
如果指定的本地地址為空,則相當(dāng)于將該地址指定為 AnyLocal 地址(請(qǐng)參閱 InetAddress.isAnyLocalAddress())。
本地端口號(hào)為零將使系統(tǒng)在綁定操作中選擇一個(gè)空閑端口。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用主機(jī)地址和端口作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| address | 遠(yuǎn)程地址 |
| port | 遠(yuǎn)程端口 |
| localAddr | 套接字綁定到的本地地址,或者對(duì)于 anyLocal 地址為 null。 |
| localPort | 套接字綁定到的本地端口或系統(tǒng)選擇的空閑端口為零。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果安全管理器存在并且它的 checkConnect 方法不允許連接到目標(biāo),或者它的 checkListen 方法不允許綁定到本地端口。 |
| IllegalArgumentException | 如果 port 參數(shù)或 localPort 參數(shù)超出指定的有效端口值范圍,即 0 到 65535 之間,包括 0 和 65535。 |
| NullPointerException | 如果地址為空。 |
Socket
@Deprecated public Socket(String host, int port, boolean stream) throws IOException
已棄用。 使用 DatagramSocket 代替 UDP 傳輸。
創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號(hào)。
如果指定的主機(jī)為空,則相當(dāng)于將地址指定為 InetAddress.getByName(null)。 也就是說(shuō),相當(dāng)于指定了loopback接口的地址。
如果流參數(shù)為真,這將創(chuàng)建一個(gè)流套接字。 如果流參數(shù)為假,它會(huì)創(chuàng)建一個(gè)數(shù)據(jù)報(bào)套接字。
如果應(yīng)用程序指定了服務(wù)器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。 否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果存在安全管理器,則調(diào)用其 checkConnect 方法,并使用主機(jī)地址和端口作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
如果使用 UDP 套接字,則與 TCP/IP 相關(guān)的套接字選項(xiàng)將不適用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | 主機(jī)名,或 null 用于環(huán)回地址。 |
| port | 端口號(hào)。 |
| stream | 一個(gè)布爾值,指示這是流套接字還是數(shù)據(jù)報(bào)套接字。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作。 |
| IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
Socket
@Deprecated public Socket(InetAddress host, int port, boolean stream) throws IOException
已棄用。 使用 DatagramSocket 代替 UDP 傳輸。
創(chuàng)建一個(gè)套接字并將其連接到指定 IP 地址的指定端口號(hào)。
如果流參數(shù)為真,這將創(chuàng)建一個(gè)流套接字。 如果流參數(shù)為假,它會(huì)創(chuàng)建一個(gè)數(shù)據(jù)報(bào)套接字。
如果應(yīng)用程序指定了服務(wù)器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。 否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果有安全管理器,則調(diào)用其 checkConnect 方法,并使用 host.getHostAddress() 和 port 作為其參數(shù)。 這可能會(huì)導(dǎo)致 SecurityException。
如果使用 UDP 套接字,則 TCP/IP 相關(guān)的套接字選項(xiàng)將不適用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| host | IP 地址。 |
| port | 端口號(hào)。 |
| stream | 如果為true,則創(chuàng)建一個(gè)流套接字; 否則,創(chuàng)建一個(gè)數(shù)據(jù)報(bào)套接字。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作。 |
| IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
| NullPointerException | 如果主機(jī)為空。 |
方法詳情
connect
public void connect(SocketAddress endpoint) throws IOException
將此套接字連接到服務(wù)器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| endpoint | 套接字地址 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在連接過(guò)程中發(fā)生錯(cuò)誤 |
| IllegalBlockingModeException | 如果此套接字具有關(guān)聯(lián)的通道,并且該通道處于非阻塞模式 |
| IllegalArgumentException | 如果端點(diǎn)為 null 或者是此套接字不支持的 SocketAddress 子類 |
connect
public void connect(SocketAddress endpoint, int timeout) throws IOException
將此套接字連接到具有指定超時(shí)值的服務(wù)器。 超時(shí)為零被解釋為無(wú)限超時(shí)。 然后連接將阻塞,直到建立或發(fā)生錯(cuò)誤。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| endpoint | 套接字地址 |
| timeout | 以毫秒為單位使用的超時(shí)值。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在連接過(guò)程中發(fā)生錯(cuò)誤 |
| SocketTimeoutException | 如果超時(shí)在連接之前到期 |
| IllegalBlockingModeException | 如果此套接字具有關(guān)聯(lián)的通道,并且該通道處于非阻塞模式 |
| IllegalArgumentException | 如果端點(diǎn)為 null 或者是此套接字不支持的 SocketAddress 子類 |
bind
public void bind(SocketAddress bindpoint) throws IOException
將套接字綁定到本地地址。
如果地址為空,那么系統(tǒng)將選擇一個(gè)臨時(shí)端口和一個(gè)有效的本地地址來(lái)綁定套接字。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| bindpoint | 要綁定到的 SocketAddress |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果綁定操作失敗,或者套接字已經(jīng)綁定。 |
| IllegalArgumentException | 如果 bindpoint 是此套接字不支持的 SocketAddress 子類 |
| SecurityException | 如果存在安全管理器并且其 checkListen 方法不允許綁定到本地端口。 |
getInetAddress
public InetAddress getInetAddress()
返回套接字連接的地址。
如果套接字在關(guān)閉之前已連接,則此方法將在套接字關(guān)閉后繼續(xù)返回已連接的地址。
返回:
此套接字連接到的遠(yuǎn)程 IP 地址,如果套接字未連接,則為 null。
getLocalAddress
public InetAddress getLocalAddress()
獲取套接字綁定的本地地址。
如果設(shè)置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回 InetAddress#getLoopbackAddress 地址。
返回:
套接字綁定的本地地址,如果安全管理器拒絕,則為環(huán)回地址,或者如果套接字已關(guān)閉或尚未綁定,則為通配符地址。
getPort
public int getPort()
返回此套接字連接到的遠(yuǎn)程端口號(hào)。
如果套接字在關(guān)閉之前已連接,則此方法將在套接字關(guān)閉后繼續(xù)返回連接的端口號(hào)。
返回:
此套接字連接到的遠(yuǎn)程端口號(hào),如果套接字尚未連接,則為 0。
getLocalPort
public int getLocalPort()
返回此套接字綁定到的本地端口號(hào)。
如果套接字在關(guān)閉之前已經(jīng)綁定,那么該方法將在套接字關(guān)閉后繼續(xù)返回本地端口號(hào)。
返回:
此套接字綁定到的本地端口號(hào),如果尚未綁定套接字,則為 -1。
getRemoteSocketAddress
public SocketAddress getRemoteSocketAddress()
返回此套接字連接到的端點(diǎn)的地址,如果未連接,則返回 null。
如果套接字在關(guān)閉之前已連接,則此方法將在套接字關(guān)閉后繼續(xù)返回已連接的地址。
返回:
表示此套接字的遠(yuǎn)程端點(diǎn)的 SocketAddress,如果尚未連接,則為 null。
getLocalSocketAddress
public SocketAddress getLocalSocketAddress()
返回此套接字綁定到的端點(diǎn)的地址。
如果綁定到由 InetSocketAddress 表示的端點(diǎn)的套接字關(guān)閉,則此方法將在套接字關(guān)閉后繼續(xù)返回 InetSocketAddress。 在這種情況下,返回的 InetSocketAddress 的地址是 InetAddress#isAnyLocalAddress 地址,它的端口是它綁定到的本地端口。
如果設(shè)置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回表示 InetAddress#getLoopbackAddress 地址和此套接字綁定的本地端口的 SocketAddress。
返回:
表示此套接字的本地端點(diǎn)的 SocketAddress,如果被安全管理器拒絕,則表示環(huán)回地址的 SocketAddress,如果尚未綁定套接字,則為 null。
getChannel
public SocketChannel getChannel()
返回與此套接字關(guān)聯(lián)的唯一 SocketChannel 對(duì)象(如果有)。
當(dāng)且僅當(dāng)通道本身是通過(guò) SocketChannel.open 或 ServerSocketChannel.accept 方法創(chuàng)建時(shí),套接字才會(huì)有通道。
返回:
與此套接字關(guān)聯(lián)的套接字通道,如果此套接字不是為通道創(chuàng)建的,則為 null
getInputStream
public InputStream getInputStream() throws IOException
返回此套接字的輸入流。
如果此套接字具有關(guān)聯(lián)的通道,則生成的輸入流將其所有操作委托給通道。如果通道處于非阻塞模式,則輸入流的讀取操作將拋出 IllegalBlockingModeException。
在異常情況下,底層連接可能會(huì)被遠(yuǎn)程主機(jī)或網(wǎng)絡(luò)軟件中斷(例如 TCP 連接情況下的連接重置)。當(dāng)網(wǎng)絡(luò)軟件檢測(cè)到斷開(kāi)的連接時(shí),以下內(nèi)容適用于返回的輸入流:-
- 網(wǎng)絡(luò)軟件可能會(huì)丟棄由套接字緩沖的字節(jié)。沒(méi)有被網(wǎng)絡(luò)軟件丟棄的字節(jié)可以使用 read 來(lái)讀取。
- 如果套接字上沒(méi)有緩沖的字節(jié),或者所有緩沖的字節(jié)都已被讀取消耗,那么所有后續(xù)的讀取調(diào)用都將拋出 IOException。
- 如果套接字上沒(méi)有緩沖字節(jié),并且套接字沒(méi)有使用 close 關(guān)閉,則 available 將返回 0。
關(guān)閉返回的 InputStream 將關(guān)閉關(guān)聯(lián)的套接字。
返回:
用于從此套接字讀取字節(jié)的輸入流。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建輸入流時(shí)發(fā)生 I/O 錯(cuò)誤、套接字已關(guān)閉、套接字未連接或套接字輸入已使用 shutdownInput() 關(guān)閉 |
getOutputStream
public OutputStream getOutputStream() throws IOException
返回此套接字的輸出流。
如果此套接字具有關(guān)聯(lián)的通道,則生成的輸出流將其所有操作委托給通道。 如果通道處于非阻塞模式,則輸出流的寫入操作將引發(fā) IllegalBlockingModeException。
關(guān)閉返回的 OutputStream 將關(guān)閉關(guān)聯(lián)的套接字。
返回:
用于將字節(jié)寫入此套接字的輸出流。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果在創(chuàng)建輸出流時(shí)發(fā)生 I/O 錯(cuò)誤或套接字未連接。 |
setTcpNoDelay
public void setTcpNoDelay(boolean on) throws SocketException
啟用/禁用 SocketOptions#TCP_NODELAY(禁用/啟用 Nagle 算法)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | true 啟用 TCP_NODELAY,false 禁用。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
getTcpNoDelay
public boolean getTcpNoDelay() throws SocketException
測(cè)試是否啟用了 SocketOptions#TCP_NODELAY。
返回:
一個(gè)布爾值,指示是否啟用 SocketOptions#TCP_NODELAY。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setSoLinger
public void setSoLinger(boolean on, int linger) throws SocketException
使用指定的延遲時(shí)間(以秒為單位)啟用/禁用 SocketOptions#SO_LINGER。 最大超時(shí)值是特定于平臺(tái)的。 該設(shè)置僅影響套接字關(guān)閉。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | 是否留戀。 |
| linger | 如果 on 為true,要逗留多久。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
| IllegalArgumentException | 如果延遲值為負(fù)。 |
getSoLinger
public int getSoLinger() throws SocketException
返回 SocketOptions#SO_LINGER 的設(shè)置。 -1 返回意味著該選項(xiàng)被禁用。 該設(shè)置僅影響套接字關(guān)閉。
返回:
SocketOptions#SO_LINGER 的設(shè)置。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
sendUrgentData
public void sendUrgentData(int data) throws IOException
在套接字上發(fā)送一個(gè)字節(jié)的緊急數(shù)據(jù)。 要發(fā)送的字節(jié)是數(shù)據(jù)參數(shù)的最低八位。 緊急字節(jié)在任何先前寫入套接字 OutputStream 之后和任何未來(lái)寫入 OutputStream 之前發(fā)送。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| data | 要發(fā)送的數(shù)據(jù)字節(jié) |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果發(fā)送數(shù)據(jù)時(shí)出錯(cuò)。 |
setOOBInline
public void setOOBInline(boolean on) throws SocketException
啟用/禁用 SocketOptions#SO_OOBINLINE(接收 TCP 緊急數(shù)據(jù)) 默認(rèn)情況下,禁用此選項(xiàng),并且在套接字上接收到的 TCP 緊急數(shù)據(jù)被靜默丟棄。 如果用戶希望接收緊急數(shù)據(jù),則必須啟用此選項(xiàng)。 啟用后,緊急數(shù)據(jù)將與普通數(shù)據(jù)一起接收。
請(qǐng)注意,僅提供有限的支持來(lái)處理傳入的緊急數(shù)據(jù)。 特別是,不提供傳入緊急數(shù)據(jù)的通知,并且沒(méi)有能力區(qū)分正常數(shù)據(jù)和緊急數(shù)據(jù),除非由更高級(jí)別的協(xié)議提供。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | true 啟用 SocketOptions#SO_OOBINLINE, false 禁用。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
getOOBInline
public boolean getOOBInline() throws SocketException
測(cè)試是否啟用了 SocketOptions#SO_OOBINLINE。
返回:
一個(gè)布爾值,指示是否啟用 SocketOptions#SO_OOBINLINE。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setSoTimeout
public void setSoTimeout(int timeout) throws SocketException
使用指定的超時(shí)啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。 將此選項(xiàng)設(shè)置為非零超時(shí),對(duì)與此 Socket 關(guān)聯(lián)的 InputStream 的 read() 調(diào)用將僅阻塞此時(shí)間量。 如果超時(shí)到期,則會(huì)引發(fā) java.net.SocketTimeoutException,盡管 Socket 仍然有效。 必須在進(jìn)入阻塞操作之前啟用該選項(xiàng)才能生效。 超時(shí)必須 > 0。超時(shí)為零被解釋為無(wú)限超時(shí)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| timeout | 指定的超時(shí)時(shí)間,以毫秒為單位。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
getSoTimeout
public int getSoTimeout() throws SocketException
返回 SocketOptions#SO_TIMEOUT 的設(shè)置。 返回 0 表示該選項(xiàng)被禁用(即無(wú)限超時(shí))。
返回:
SocketOptions#SO_TIMEOUT 的設(shè)置
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setSendBufferSize
public void setSendBufferSize(int size) throws SocketException
將 SocketOptions#SO_SNDBUF 選項(xiàng)設(shè)置為此 Socket 的指定值。 SocketOptions#SO_SNDBUF 選項(xiàng)被平臺(tái)的網(wǎng)絡(luò)代碼用作設(shè)置底層網(wǎng)絡(luò) I/O 緩沖區(qū)大小的提示。
因?yàn)?SocketOptions#SO_SNDBUF 是一個(gè)提示,所以想要驗(yàn)證緩沖區(qū)設(shè)置為多大大小的應(yīng)用程序應(yīng)該調(diào)用 getSendBufferSize()。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| size | 設(shè)置發(fā)送緩沖區(qū)大小的大小。 該值必須大于 0。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
| IllegalArgumentException | 如果值為 0 或?yàn)樨?fù)數(shù)。 |
getSendBufferSize
public int getSendBufferSize() throws SocketException
獲取此 Socket 的 SocketOptions#SO_SNDBUF 選項(xiàng)的值,即平臺(tái)用于在此 Socket 上輸出的緩沖區(qū)大小。
返回:
此 Socket 的 SocketOptions#SO_SNDBUF 選項(xiàng)的值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setReceiveBufferSize
public void setReceiveBufferSize(int size) throws SocketException
將 SocketOptions#SO_RCVBUF 選項(xiàng)設(shè)置為此 Socket 的指定值。 SocketOptions#SO_RCVBUF 選項(xiàng)被平臺(tái)的網(wǎng)絡(luò)代碼用作設(shè)置底層網(wǎng)絡(luò) I/O 緩沖區(qū)大小的提示。
增加接收緩沖區(qū)大小可以提高大容量連接的網(wǎng)絡(luò) I/O 性能,而減小它可以幫助減少傳入數(shù)據(jù)的積壓。
因?yàn)?SocketOptions#SO_RCVBUF 是一個(gè)提示,所以想要驗(yàn)證緩沖區(qū)設(shè)置為多大大小的應(yīng)用程序應(yīng)該調(diào)用 getReceiveBufferSize()。
SocketOptions#SO_RCVBUF 的值也用于設(shè)置通告給遠(yuǎn)程對(duì)等方的 TCP 接收窗口。一般情況下,只要連接了套接字,就可以隨時(shí)修改窗口大小。但是,如果需要大于 64K 的接收窗口,則必須在套接字連接到遠(yuǎn)程對(duì)等點(diǎn)之前請(qǐng)求。有兩種情況需要注意:
- 對(duì)于從 ServerSocket 接受的套接字,這必須通過(guò)在 ServerSocket 綁定到本地地址之前調(diào)用 ServerSocket#setReceiveBufferSize(int) 來(lái)完成。
- 對(duì)于客戶端套接字,setReceiveBufferSize() 必須在將套接字連接到其遠(yuǎn)程對(duì)等方之前調(diào)用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| size | 設(shè)置接收緩沖區(qū)大小的大小。 該值必須大于 0。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果值為 0 或?yàn)樨?fù)數(shù)。 |
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
getReceiveBufferSize
public int getReceiveBufferSize() throws SocketException
獲取此 Socket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值,即平臺(tái)用于在此 Socket 上輸入的緩沖區(qū)大小。
返回:
此 Socket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setKeepAlive
public void setKeepAlive(boolean on) throws SocketException
啟用/禁用 SocketOptions#SO_KEEPALIVE。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | 是否開(kāi)啟socket keep alive。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
getKeepAlive
public boolean getKeepAlive() throws SocketException
測(cè)試是否啟用了 SocketOptions#SO_KEEPALIVE。
返回:
一個(gè)布爾值,指示是否啟用 SocketOptions#SO_KEEPALIVE。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
setTrafficClass
public void setTrafficClass(int tc) throws SocketException
為從此 Socket 發(fā)送的數(shù)據(jù)包設(shè)置 IP 標(biāo)頭中的流量類別或服務(wù)類型八位字節(jié)。由于底層網(wǎng)絡(luò)實(shí)現(xiàn)可能會(huì)忽略此值,因此應(yīng)用程序應(yīng)將其視為提示。
tc 必須在 0 <= tc <= 255 范圍內(nèi),否則將拋出 IllegalArgumentException。
筆記:
對(duì)于 Internet 協(xié)議 v4,該值由一個(gè)整數(shù)組成,其中最低有效 8 位表示套接字發(fā)送的 IP 數(shù)據(jù)包中 TOS 八位字節(jié)的值。 RFC 1349 定義 TOS 值如下:
- IPTOS_LOWCOST (0x02)
- IPTOS_RELIABILITY (0x04)
- IPTOS_THROUGHPUT (0x08)
- IPTOS_LOWDELAY (0x10)
最后一個(gè)低位總是被忽略,因?yàn)樗鼘?duì)應(yīng)于 MBZ(必須為零)位。
設(shè)置優(yōu)先級(jí)字段中的位可能會(huì)導(dǎo)致 SocketException 指示不允許該操作。
正如 RFC 1122 第 4.2.4.2 節(jié)所示,兼容的 TCP 實(shí)現(xiàn)應(yīng)該但不是必須讓應(yīng)用程序在連接的生命周期內(nèi)更改 TOS 字段。所以在TCP連接建立后是否可以改變type-of-service字段取決于底層平臺(tái)的實(shí)現(xiàn)。應(yīng)用程序不應(yīng)假設(shè)他們可以在連接后更改 TOS 字段。
對(duì)于 Internet 協(xié)議 v6,tc 是放置在 IP 標(biāo)頭的 sin6_flowinfo 字段中的值。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| tc | 位集的 int 值。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果設(shè)置流量類別或服務(wù)類型時(shí)出錯(cuò) |
getTrafficClass
public int getTrafficClass() throws SocketException
獲取從此 Socket 發(fā)送的數(shù)據(jù)包的 IP 標(biāo)頭中的流量類別或服務(wù)類型
由于底層網(wǎng)絡(luò)實(shí)現(xiàn)可能會(huì)忽略使用 setTrafficClass(int) 設(shè)置的流量類或服務(wù)類型,因此此方法可能返回與之前在此 Socket 上使用 setTrafficClass(int) 方法設(shè)置的值不同的值。
返回:
已設(shè)置的流量類別或服務(wù)類型
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果獲取流量類別或服務(wù)類型值時(shí)出錯(cuò)。 |
setReuseAddress
public void setReuseAddress(boolean on) throws SocketException
啟用/禁用 SocketOptions#SO_REUSEADDR 套接字選項(xiàng)。
當(dāng) TCP 連接關(guān)閉時(shí),連接可能會(huì)在連接關(guān)閉后的一段時(shí)間內(nèi)保持超時(shí)狀態(tài)(通常稱為 TIME_WAIT 狀態(tài)或 2MSL 等待狀態(tài))。 對(duì)于使用眾所周知的套接字地址或端口的應(yīng)用程序,如果存在涉及套接字地址或端口的處于超時(shí)狀態(tài)的連接,則可能無(wú)法將套接字綁定到所需的 SocketAddress。
在使用 bind(java.net.SocketAddress) 綁定套接字之前啟用 SocketOptions#SO_REUSEADDR 允許綁定套接字,即使先前的連接處于超時(shí)狀態(tài)。
創(chuàng)建 Socket 時(shí),SocketOptions#SO_REUSEADDR 的初始設(shè)置被禁用。
未定義套接字綁定后啟用或禁用 SocketOptions#SO_REUSEADDR 時(shí)的行為(參見(jiàn) isBound())。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| on | 是否啟用或禁用套接字選項(xiàng) |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果啟用或禁用 SocketOptions#SO_REUSEADDR 套接字選項(xiàng)發(fā)生錯(cuò)誤,或者套接字已關(guān)閉。 |
getReuseAddress
public boolean getReuseAddress() throws SocketException
測(cè)試 SocketOptions#SO_REUSEADDR 是否啟用。
返回:
一個(gè)布爾值,指示是否啟用 SocketOptions#SO_REUSEADDR。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
close
public void close() throws IOException
關(guān)閉此套接字。
當(dāng)前在此套接字上的 I/O 操作中阻塞的任何線程都將拋出 SocketException。
一旦套接字關(guān)閉,它就不能用于進(jìn)一步的網(wǎng)絡(luò)使用(即不能重新連接或重新連接)。 需要?jiǎng)?chuàng)建一個(gè)新的套接字。
關(guān)閉此套接字也會(huì)關(guān)閉套接字的 InputStream 和 OutputStream。
如果此套接字具有關(guān)聯(lián)的通道,則該通道也將關(guān)閉。
指定者:
在接口 AutoCloseable 中關(guān)閉
指定者:
在接口Closeable中關(guān)閉
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果關(guān)閉此套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
shutdownInput
public void shutdownInput() throws IOException
將此套接字的輸入流放在“流的末尾”。 任何發(fā)送到套接字輸入流端的數(shù)據(jù)都會(huì)被確認(rèn),然后被靜默丟棄。
如果在套接字上調(diào)用此方法后從套接字輸入流中讀取,則流的可用方法將返回 0,其讀取方法將返回 -1(流結(jié)束)。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果關(guān)閉此套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
shutdownOutput
public void shutdownOutput() throws IOException
禁用此套接字的輸出流。 對(duì)于 TCP 套接字,任何先前寫入的數(shù)據(jù)都將按照 TCP 的正常連接終止順序發(fā)送。 如果在套接字上調(diào)用 shutdownOutput() 后寫入套接字輸出流,則該流將引發(fā) IOException。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果關(guān)閉此套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
toString
public String toString()
將此套接字轉(zhuǎn)換為字符串。
覆蓋:
類 Object 中的 toString
返回:
此套接字的字符串表示形式。
isConnected
public boolean isConnected()
返回套接字的連接狀態(tài)。
注意:關(guān)閉套接字不會(huì)清除其連接狀態(tài),這意味著如果在關(guān)閉之前成功連接,則此方法將為已關(guān)閉的套接字返回 true。
返回:
如果套接字成功連接到服務(wù)器,則為 true
isBound
public boolean isBound()
返回套接字的綁定狀態(tài)。
注意:關(guān)閉套接字不會(huì)清除其綁定狀態(tài),這意味著如果在關(guān)閉之前成功綁定,則此方法將為已關(guān)閉的套接字返回 true。
返回:
如果套接字成功綁定到地址,則為 true
isClosed
public boolean isClosed()
返回套接字的關(guān)閉狀態(tài)。
返回:
如果套接字已關(guān)閉,則為 true
isInputShutdown
public boolean isInputShutdown()
返回套接字連接的讀半部分是否關(guān)閉。
返回:
如果套接字的輸入已關(guān)閉,則為 true
isOutputShutdown
public boolean isOutputShutdown()
返回套接字連接的寫半部分是否關(guān)閉。
返回:
如果套接字的輸出已關(guān)閉,則為 true
setSocketImplFactory
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
為應(yīng)用程序設(shè)置客戶端套接字實(shí)現(xiàn)工廠。 工廠只能指定一次。
當(dāng)應(yīng)用程序創(chuàng)建新的客戶端套接字時(shí),會(huì)調(diào)用套接字實(shí)現(xiàn)工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。
除非已經(jīng)設(shè)置了工廠,否則將 null 傳遞給方法是無(wú)操作的。
如果有安全管理器,該方法首先調(diào)用安全管理器的 checkSetFactory 方法,確保操作被允許。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| fac | 想要的工廠。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果設(shè)置套接字工廠時(shí)發(fā)生 I/O 錯(cuò)誤。 |
| SocketException | 如果工廠已經(jīng)定義。 |
| SecurityException | 如果存在安全管理器并且其 checkSetFactory 方法不允許該操作。 |
setPerformancePreferences
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
設(shè)置此套接字的性能首選項(xiàng)。
套接字默認(rèn)使用 TCP/IP 協(xié)議。一些實(shí)現(xiàn)可能會(huì)提供與 TCP/IP 具有不同性能特征的替代協(xié)議。此方法允許應(yīng)用程序表達(dá)自己的偏好,即當(dāng)實(shí)現(xiàn)從可用協(xié)議中進(jìn)行選擇時(shí)應(yīng)如何進(jìn)行這些權(quán)衡。
性能偏好由三個(gè)整數(shù)描述,其值表示短連接時(shí)間、低延遲和高帶寬的相對(duì)重要性。整數(shù)的絕對(duì)值無(wú)關(guān)緊要;為了選擇一個(gè)協(xié)議,這些值被簡(jiǎn)單地比較,較大的值表示更強(qiáng)的偏好。負(fù)值表示比正值低的優(yōu)先級(jí)。例如,如果應(yīng)用程序更喜歡短連接時(shí)間而不是低延遲和高帶寬,那么它可以使用值 (1, 0, 0) 調(diào)用此方法。如果應(yīng)用程序更喜歡高帶寬而不是低延遲,以及低延遲而不是短連接時(shí)間,那么它可以使用值 (0, 1, 2) 調(diào)用此方法。
在此套接字連接后調(diào)用此方法將無(wú)效。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| connectionTime | 表示短連接時(shí)間的相對(duì)重要性的 int |
| latency | 一個(gè)表示低延遲相對(duì)重要性的 int |
| bandwidth | 表示高帶寬相對(duì)重要性的 int |
網(wǎng)站名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS Socket
文章URL:http://m.5511xx.com/article/cdidpch.html


咨詢
建站咨詢
