W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.net.ServerSocket
public class ServerSocket
extends Object
implements Closeable
此類(lèi)實(shí)現(xiàn)服務(wù)器套接字。 服務(wù)器套接字等待通過(guò)網(wǎng)絡(luò)進(jìn)入的請(qǐng)求。 它根據(jù)該請(qǐng)求執(zhí)行一些操作,然后可能將結(jié)果返回給請(qǐng)求者。
服務(wù)器套接字的實(shí)際工作由 SocketImpl 類(lèi)的實(shí)例執(zhí)行。 應(yīng)用程序可以更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠,以將其自身配置為創(chuàng)建適合本地防火墻的套接字。
構(gòu)造函數(shù) | 描述 |
---|---|
ServerSocket() | 創(chuàng)建一個(gè)未綁定的服務(wù)器套接字。 |
ServerSocket(int port) | 創(chuàng)建一個(gè)綁定到指定端口的服務(wù)器套接字。 |
ServerSocket(int port, int backlog) | 創(chuàng)建一個(gè)服務(wù)器套接字并將其綁定到指定的本地端口號(hào),并具有指定的 backlog。 |
ServerSocket(int port, int backlog, InetAddress bindAddr) | 創(chuàng)建具有指定端口、偵聽(tīng)積壓和要綁定的本地 IP 地址的服務(wù)器。 |
修飾符和類(lèi)型 | 方法 | 描述 |
---|---|---|
Socket | accept() | 偵聽(tīng)要與此套接字建立的連接并接受它。 |
void | bind(SocketAddress endpoint) | 將 ServerSocket 綁定到特定地址(IP 地址和端口號(hào))。 |
void | bind(SocketAddress endpoint, int backlog) | 將 ServerSocket 綁定到特定地址(IP 地址和端口號(hào))。 |
void | close() | 關(guān)閉此套接字。 |
ServerSocketChannel | getChannel() | 返回與此套接字關(guān)聯(lián)的唯一 ServerSocketChannel 對(duì)象(如果有)。 |
InetAddress | getInetAddress() | 返回此服務(wù)器套接字的本地地址。 |
int | getLocalPort() | 返回此套接字正在偵聽(tīng)的端口號(hào)。 |
SocketAddress | getLocalSocketAddress() | 返回此套接字綁定到的端點(diǎn)的地址。 |
int | getReceiveBufferSize() | 獲取此 ServerSocket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值,即用于從該 ServerSocket 接受的套接字的建議緩沖區(qū)大小。 |
boolean | getReuseAddress() | 測(cè)試 SocketOptions#SO_REUSEADDR 是否啟用。 |
int | getSoTimeout() | 檢索 SocketOptions#SO_TIMEOUT 的設(shè)置。 |
protected void | implAccept(Socket s) | ServerSocket 的子類(lèi)使用此方法覆蓋 accept() 以返回它們自己的套接字子類(lèi)。 |
boolean | isBound() | 返回 ServerSocket 的綁定狀態(tài)。 |
boolean | isClosed() | 返回 ServerSocket 的關(guān)閉狀態(tài)。 |
void | setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 設(shè)置此 ServerSocket 的性能首選項(xiàng)。 |
void | setReceiveBufferSize(int size) | 為從此 ServerSocket 接受的套接字設(shè)置 SocketOptions#SO_RCVBUF 選項(xiàng)的默認(rèn)建議值。 |
void | setReuseAddress(boolean on) | 啟用/禁用 SocketOptions#SO_REUSEADDR 套接字選項(xiàng)。 |
static void | setSocketFactory(SocketImplFactory fac) | 為應(yīng)用程序設(shè)置服務(wù)器套接字實(shí)現(xiàn)工廠。 |
void | setSoTimeout(int timeout) | 使用指定的超時(shí)啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。 |
String | toString() | 以 String 形式返回此套接字的實(shí)現(xiàn)地址和實(shí)現(xiàn)端口。 |
從類(lèi) java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
public ServerSocket() throws IOException
創(chuàng)建一個(gè)未綁定的服務(wù)器套接字。
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 打開(kāi)套接字時(shí)出現(xiàn) IO 錯(cuò)誤。 |
public ServerSocket(int port) throws IOException
創(chuàng)建一個(gè)綁定到指定端口的服務(wù)器套接字。 端口號(hào) 0 表示端口號(hào)是自動(dòng)分配的,通常來(lái)自臨時(shí)端口范圍。 然后可以通過(guò)調(diào)用 getLocalPort 檢索此端口號(hào)。
傳入連接指示(連接請(qǐng)求)的最大隊(duì)列長(zhǎng)度設(shè)置為 50。如果在隊(duì)列已滿(mǎn)時(shí)連接指示到達(dá),則拒絕連接。
如果應(yīng)用程序指定了服務(wù)器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。 否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果有安全管理器,則調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。 這可能會(huì)導(dǎo)致 SecurityException。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
port | 端口號(hào),或 0 使用自動(dòng)分配的端口號(hào)。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果在打開(kāi)套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
SecurityException | 如果安全管理器存在并且其 checkListen 方法不允許該操作。 |
IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
public ServerSocket(int port, int backlog) throws IOException
創(chuàng)建一個(gè)服務(wù)器套接字并將其綁定到指定的本地端口號(hào),并具有指定的 backlog。端口號(hào) 0 表示端口號(hào)是自動(dòng)分配的,通常來(lái)自臨時(shí)端口范圍。然后可以通過(guò)調(diào)用 getLocalPort 檢索此端口號(hào)。
傳入連接指示(連接請(qǐng)求)的最大隊(duì)列長(zhǎng)度設(shè)置為 backlog 參數(shù)。如果隊(duì)列滿(mǎn)時(shí)有連接指示到達(dá),則拒絕連接。
如果應(yīng)用程序指定了服務(wù)器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來(lái)創(chuàng)建實(shí)際的套接字實(shí)現(xiàn)。否則會(huì)創(chuàng)建一個(gè)“普通”套接字。
如果有安全管理器,則調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。這可能會(huì)導(dǎo)致 SecurityException。 backlog 參數(shù)是套接字上請(qǐng)求的最大掛起連接數(shù)。它的確切語(yǔ)義是特定于實(shí)現(xiàn)的。特別地,實(shí)現(xiàn)可以強(qiáng)加最大長(zhǎng)度或者可以選擇完全忽略參數(shù)。提供的值應(yīng)大于 0。如果小于或等于 0,則將使用特定于實(shí)現(xiàn)的默認(rèn)值。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
port | 端口號(hào),或 0 使用自動(dòng)分配的端口號(hào)。 |
backlog | 請(qǐng)求的傳入連接隊(duì)列的最大長(zhǎng)度。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果在打開(kāi)套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
SecurityException | 如果安全管理器存在并且其 checkListen 方法不允許該操作。 |
IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
創(chuàng)建具有指定端口、偵聽(tīng)積壓和要綁定的本地 IP 地址的服務(wù)器。 bindAddr 參數(shù)可用于多宿主主機(jī)上的 ServerSocket,它只接受對(duì)其地址之一的連接請(qǐng)求。如果 bindAddr 為空,它將默認(rèn)接受任何/所有本地地址上的連接。端口必須介于 0 和 65535 之間(包括 0 和 65535)。端口號(hào) 0 表示端口號(hào)是自動(dòng)分配的,通常來(lái)自臨時(shí)端口范圍。然后可以通過(guò)調(diào)用 getLocalPort 檢索此端口號(hào)。
如果有安全管理器,則此方法調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。這可能會(huì)導(dǎo)致 SecurityException。 backlog 參數(shù)是套接字上請(qǐng)求的最大掛起連接數(shù)。它的確切語(yǔ)義是特定于實(shí)現(xiàn)的。特別地,實(shí)現(xiàn)可以強(qiáng)加最大長(zhǎng)度或者可以選擇完全忽略參數(shù)。提供的值應(yīng)大于 0。如果小于或等于 0,則將使用特定于實(shí)現(xiàn)的默認(rèn)值。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
port | 端口號(hào),或 0 使用自動(dòng)分配的端口號(hào)。 |
backlog | 請(qǐng)求的傳入連接隊(duì)列的最大長(zhǎng)度。 |
bindAddr | 服務(wù)器將綁定到的本地 InetAddress |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SecurityException | 如果安全管理器存在并且其 checkListen 方法不允許該操作。 |
IOException | 如果在打開(kāi)套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
IllegalArgumentException | 如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。 |
public void bind(SocketAddress endpoint) throws IOException
將 ServerSocket 綁定到特定地址(IP 地址和端口號(hào))。
如果地址為空,那么系統(tǒng)將選擇一個(gè)臨時(shí)端口和一個(gè)有效的本地地址來(lái)綁定套接字。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
endpoint | 要綁定的 IP 地址和端口號(hào)。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果綁定操作失敗,或者套接字已經(jīng)綁定。 |
SecurityException | 如果存在 SecurityManager 并且其 checkListen 方法不允許該操作。 |
IllegalArgumentException | 如果端點(diǎn)是此套接字不支持的 SocketAddress 子類(lèi) |
public void bind(SocketAddress endpoint, int backlog) throws IOException
將 ServerSocket 綁定到特定地址(IP 地址和端口號(hào))。
如果地址為空,那么系統(tǒng)將選擇一個(gè)臨時(shí)端口和一個(gè)有效的本地地址來(lái)綁定套接字。
backlog 參數(shù)是套接字上請(qǐng)求的最大掛起連接數(shù)。 它的確切語(yǔ)義是特定于實(shí)現(xiàn)的。 特別地,實(shí)現(xiàn)可以強(qiáng)加最大長(zhǎng)度或者可以選擇完全忽略參數(shù)。 提供的值應(yīng)大于 0。如果小于或等于 0,則將使用特定于實(shí)現(xiàn)的默認(rèn)值。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
endpoint | 要綁定的 IP 地址和端口號(hào)。 |
backlog | 請(qǐng)求的傳入連接隊(duì)列的最大長(zhǎng)度。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果綁定操作失敗,或者套接字已經(jīng)綁定。 |
SecurityException | 如果存在 SecurityManager 并且其 checkListen 方法不允許該操作。 |
IllegalArgumentException | 如果端點(diǎn)是此套接字不支持的 SocketAddress 子類(lèi) |
public InetAddress getInetAddress()
返回此服務(wù)器套接字的本地地址。
如果socket在關(guān)閉之前就綁定了,那么這個(gè)方法會(huì)在socket關(guān)閉后繼續(xù)返回本地地址。
如果設(shè)置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回 InetAddress#getLoopbackAddress 地址。
返回:
此套接字綁定到的地址,如果安全管理器拒絕,則返回環(huán)回地址,如果套接字未綁定,則返回 null。
public int getLocalPort()
返回此套接字正在偵聽(tīng)的端口號(hào)。
如果套接字在關(guān)閉之前已綁定,則此方法將在套接字關(guān)閉后繼續(xù)返回端口號(hào)。
返回:
此套接字正在偵聽(tīng)的端口號(hào),如果尚未綁定套接字,則為 -1。
public SocketAddress getLocalSocketAddress()
返回此套接字綁定到的端點(diǎn)的地址。
如果套接字在關(guān)閉之前已綁定,則該方法將在套接字關(guān)閉后繼續(xù)返回端點(diǎn)的地址。
如果設(shè)置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回代表 InetAddress#getLoopbackAddress 地址和套接字綁定的本地端口的 SocketAddress。
返回:
表示此套接字的本地端點(diǎn)的 SocketAddress,如果安全管理器拒絕,則表示環(huán)回地址的 SocketAddress,如果尚未綁定套接字,則返回 null。
public Socket accept() throws IOException
偵聽(tīng)要與此套接字建立的連接并接受它。 該方法阻塞,直到建立連接。
創(chuàng)建一個(gè)新的 Socket s,如果有安全管理器,則使用 s.getInetAddress().getHostAddress() 和 s.getPort() 作為其參數(shù)調(diào)用安全管理器的 checkAccept 方法,以確保允許操作。 這可能會(huì)導(dǎo)致 SecurityException。
返回:
新的 Socket
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果在等待連接時(shí)發(fā)生 I/O 錯(cuò)誤。 |
SecurityException | 如果存在安全管理器并且其 checkAccept 方法不允許該操作。 |
SocketTimeoutException | 如果先前使用 setSoTimeout 設(shè)置了超時(shí)并且已達(dá)到超時(shí)。 |
IllegalBlockingModeException | 如果此套接字有關(guān)聯(lián)的通道,則通道處于非阻塞模式,并且沒(méi)有準(zhǔn)備好接受的連接 |
protected final void implAccept(Socket s) throws IOException
ServerSocket 的子類(lèi)使用此方法覆蓋 accept() 以返回它們自己的套接字子類(lèi)。 所以 FooServerSocket 通常會(huì)給這個(gè)方法一個(gè)空的 FooSocket。 從 implAccept 返回時(shí),F(xiàn)ooSocket 將連接到客戶(hù)端。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
s | 套接字 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IllegalBlockingModeException | 如果此套接字具有關(guān)聯(lián)的通道,并且該通道處于非阻塞模式 |
IOException | 如果在等待連接時(shí)發(fā)生 I/O 錯(cuò)誤。 |
public void close() throws IOException
關(guān)閉此套接字。 當(dāng)前在 accept() 中阻塞的任何線程都會(huì)拋出 SocketException。
如果此套接字具有關(guān)聯(lián)的通道,則該通道也將關(guān)閉。
指定者:
在接口 AutoCloseable 中關(guān)閉
指定者:
在接口Closeable中關(guān)閉
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果關(guān)閉套接字時(shí)發(fā)生 I/O 錯(cuò)誤。 |
public ServerSocketChannel getChannel()
返回與此套接字關(guān)聯(lián)的唯一 ServerSocketChannel 對(duì)象(如果有)。
當(dāng)且僅當(dāng)通道本身是通過(guò) ServerSocketChannel.open 方法創(chuàng)建時(shí),服務(wù)器套接字才會(huì)有通道。
返回:
與此套接字關(guān)聯(lián)的服務(wù)器套接字通道,如果此套接字不是為通道創(chuàng)建的,則為 null
public boolean isBound()
返回 ServerSocket 的綁定狀態(tài)。
返回:
如果 ServerSocket 成功綁定到地址,則為 true
public boolean isClosed()
返回 ServerSocket 的關(guān)閉狀態(tài)。
返回:
如果套接字已關(guān)閉,則為 true
public void setSoTimeout(int timeout) throws SocketException
使用指定的超時(shí)啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。 將此選項(xiàng)設(shè)置為非零超時(shí),對(duì)此 ServerSocket 的 accept() 調(diào)用將僅阻塞此時(shí)間量。 如果超時(shí)到期,則會(huì)引發(fā) java.net.SocketTimeoutException,盡管 ServerSocket 仍然有效。 必須在進(jìn)入阻塞操作之前啟用該選項(xiàng)才能生效。 超時(shí)必須 > 0。超時(shí)為零被解釋為無(wú)限超時(shí)。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
timeout | 指定的超時(shí)時(shí)間,以毫秒為單位 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
public int getSoTimeout() throws IOException
檢索 SocketOptions#SO_TIMEOUT 的設(shè)置。 返回 0 表示該選項(xiàng)被禁用(即無(wú)限超時(shí))。
返回:
SocketOptions#SO_TIMEOUT 值
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果發(fā)生 I/O 錯(cuò)誤 |
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)(通常稱(chēng)為 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)建 ServerSocket 時(shí),未定義 SocketOptions#SO_REUSEADDR 的初始設(shè)置。 應(yīng)用程序可以使用 getReuseAddress() 來(lái)確定 SocketOptions#SO_REUSEADDR 的初始設(shè)置。
未定義套接字綁定后啟用或禁用 SocketOptions#SO_REUSEADDR 時(shí)的行為。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
on | 是否啟用或禁用套接字選項(xiàng) |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SocketException | 如果啟用或禁用 SocketOptions#SO_REUSEADDR 套接字選項(xiàng)發(fā)生錯(cuò)誤,或者套接字已關(guān)閉。 |
public boolean getReuseAddress() throws SocketException
測(cè)試 SocketOptions#SO_REUSEADDR 是否啟用。
返回:
一個(gè)布爾值,指示是否啟用 SocketOptions#SO_REUSEADDR。
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
public String toString()
以 String 形式返回此套接字的實(shí)現(xiàn)地址和實(shí)現(xiàn)端口。
如果設(shè)置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回一個(gè)表示 InetAddress#getLoopbackAddress 地址的 InetAddress 作為實(shí)現(xiàn)地址。
覆蓋:
類(lèi) Object 中的 toString
返回:
此套接字的字符串表示形式。
public static void setSocketFactory(SocketImplFactory fac) throws IOException
為應(yīng)用程序設(shè)置服務(wù)器套接字實(shí)現(xiàn)工廠。 工廠只能指定一次。
當(dāng)應(yīng)用程序創(chuàng)建新的服務(wù)器套接字時(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ù)名稱(chēng) | 參數(shù)描述 |
---|---|
fac | 想要的工廠。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
IOException | 如果設(shè)置套接字工廠時(shí)發(fā)生 I/O 錯(cuò)誤。 |
SocketException | 如果工廠已經(jīng)定義。 |
SecurityException | 如果存在安全管理器并且其 checkSetFactory 方法不允許該操作。 |
public void setReceiveBufferSize(int size) throws SocketException
為從此 ServerSocket 接受的套接字設(shè)置 SocketOptions#SO_RCVBUF 選項(xiàng)的默認(rèn)建議值。在接受的套接字中實(shí)際設(shè)置的值必須在接受()返回套接字后通過(guò)調(diào)用Socket#getReceiveBufferSize()來(lái)確定。
SocketOptions#SO_RCVBUF 的值既用于設(shè)置內(nèi)部套接字接收緩沖區(qū)的大小,也用于設(shè)置通告給遠(yuǎn)程對(duì)等方的 TCP 接收窗口的大小。
隨后可以通過(guò)調(diào)用 Socket#setReceiveBufferSize(int) 來(lái)更改該值。但是,如果應(yīng)用程序希望允許大于 64K 字節(jié)的接收窗口(如 RFC1323 所定義),則必須在 ServerSocket 中設(shè)置建議的值,然后才能將其綁定到本地地址。這意味著,必須使用無(wú)參數(shù)構(gòu)造函數(shù)創(chuàng)建 ServerSocket,然后必須調(diào)用 setReceiveBufferSize(),最后通過(guò)調(diào)用 bind() 將 ServerSocket 綁定到地址。
不這樣做不會(huì)導(dǎo)致錯(cuò)誤,并且緩沖區(qū)大小可能會(huì)設(shè)置為請(qǐng)求的值,但從該 ServerSocket 接受的套接字中的 TCP 接收窗口將不大于 64K 字節(jié)。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
size | 設(shè)置接收緩沖區(qū)大小的大小。 該值必須大于 0。 |
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
IllegalArgumentException | 如果值為 0 或?yàn)樨?fù)數(shù)。 |
public int getReceiveBufferSize() throws SocketException
獲取此 ServerSocket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值,即用于從該 ServerSocket 接受的套接字的建議緩沖區(qū)大小。
注意,在接受的套接字中實(shí)際設(shè)置的值是通過(guò)調(diào)用 Socket#getReceiveBufferSize() 確定的。
返回:
此 Socket 的 SocketOptions#SO_RCVBUF 選項(xiàng)的值。
Throws:
Throw名稱(chēng) | Throw描述 |
---|---|
SocketException | 如果底層協(xié)議有錯(cuò)誤,例如 TCP 錯(cuò)誤。 |
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
設(shè)置此 ServerSocket 的性能首選項(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)的偏好。例如,如果應(yīng)用程序更喜歡短連接時(shí)間而不是低延遲和高帶寬,那么它可以使用值 (1, 0, 0) 調(diào)用此方法。如果應(yīng)用程序更喜歡高帶寬而不是低延遲,以及低延遲而不是短連接時(shí)間,那么它可以使用值 (0, 1, 2) 調(diào)用此方法。
綁定此套接字后調(diào)用此方法將無(wú)效。這意味著為了使用此功能,需要使用無(wú)參數(shù)構(gòu)造函數(shù)創(chuàng)建套接字。
參數(shù):
參數(shù)名稱(chēng) | 參數(shù)描述 |
---|---|
connectionTime | 表示短連接時(shí)間的相對(duì)重要性的 int |
latency | 一個(gè)表示低延遲相對(duì)重要性的 int |
bandwidth | 表示高帶寬相對(duì)重要性的 int |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: