日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS ServerSocket

ServerSocket

成都創(chuàng)新互聯(lián)公司服務項目包括廣饒網(wǎng)站建設、廣饒網(wǎng)站制作、廣饒網(wǎng)頁制作以及廣饒網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,廣饒網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到廣饒省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

java.lang.Object

|---java.net.ServerSocket

public class ServerSocket
extends Object
implements Closeable

此類實現(xiàn)服務器套接字。 服務器套接字等待通過網(wǎng)絡進入的請求。 它根據(jù)該請求執(zhí)行一些操作,然后可能將結(jié)果返回給請求者。

服務器套接字的實際工作由 SocketImpl 類的實例執(zhí)行。 應用程序可以更改創(chuàng)建套接字實現(xiàn)的套接字工廠,以將其自身配置為創(chuàng)建適合本地防火墻的套接字。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù)描述
ServerSocket()創(chuàng)建一個未綁定的服務器套接字。
ServerSocket(int port)創(chuàng)建一個綁定到指定端口的服務器套接字。
ServerSocket(int port, int backlog)創(chuàng)建一個服務器套接字并將其綁定到指定的本地端口號,并具有指定的 backlog。
ServerSocket(int port, int backlog, InetAddress bindAddr)創(chuàng)建具有指定端口、偵聽積壓和要綁定的本地 IP 地址的服務器。

方法總結(jié)

修飾符和類型方法描述
Socketaccept()偵聽要與此套接字建立的連接并接受它。
voidbind(SocketAddress endpoint)將 ServerSocket 綁定到特定地址(IP 地址和端口號)。
voidbind(SocketAddress endpoint, int backlog)將 ServerSocket 綁定到特定地址(IP 地址和端口號)。
voidclose()關閉此套接字。
ServerSocketChannelgetChannel()返回與此套接字關聯(lián)的唯一 ServerSocketChannel 對象(如果有)。
InetAddressgetInetAddress()返回此服務器套接字的本地地址。
intgetLocalPort()返回此套接字正在偵聽的端口號。
SocketAddressgetLocalSocketAddress()返回此套接字綁定到的端點的地址。
intgetReceiveBufferSize()獲取此 ServerSocket 的 SocketOptions#SO_RCVBUF 選項的值,即用于從該 ServerSocket 接受的套接字的建議緩沖區(qū)大小。
booleangetReuseAddress()測試 SocketOptions#SO_REUSEADDR 是否啟用。
intgetSoTimeout()檢索 SocketOptions#SO_TIMEOUT 的設置。
protected voidimplAccept(Socket s)ServerSocket 的子類使用此方法覆蓋 accept() 以返回它們自己的套接字子類。
booleanisBound()返回 ServerSocket 的綁定狀態(tài)。
booleanisClosed()返回 ServerSocket 的關閉狀態(tài)。
voidsetPerformancePreferences(int connectionTime, int latency, int bandwidth)設置此 ServerSocket 的性能首選項。
voidsetReceiveBufferSize(int size)為從此 ServerSocket 接受的套接字設置 SocketOptions#SO_RCVBUF 選項的默認建議值。
voidsetReuseAddress(boolean on)啟用/禁用 SocketOptions#SO_REUSEADDR 套接字選項。
static voidsetSocketFactory(SocketImplFactory fac)為應用程序設置服務器套接字實現(xiàn)工廠。
voidsetSoTimeout(int timeout)使用指定的超時啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。
StringtoString()以 String 形式返回此套接字的實現(xiàn)地址和實現(xiàn)端口。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

構(gòu)造函數(shù)詳細信息

ServerSocket

public ServerSocket() throws IOException

創(chuàng)建一個未綁定的服務器套接字。

Throws:

Throw名稱Throw描述
IOException打開套接字時出現(xiàn) IO 錯誤。

ServerSocket

public ServerSocket(int port) throws IOException

創(chuàng)建一個綁定到指定端口的服務器套接字。 端口號 0 表示端口號是自動分配的,通常來自臨時端口范圍。 然后可以通過調(diào)用 getLocalPort 檢索此端口號。

傳入連接指示(連接請求)的最大隊列長度設置為 50。如果在隊列已滿時連接指示到達,則拒絕連接。

如果應用程序指定了服務器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來創(chuàng)建實際的套接字實現(xiàn)。 否則會創(chuàng)建一個“普通”套接字。

如果有安全管理器,則調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。 這可能會導致 SecurityException。

參數(shù):

參數(shù)名稱參數(shù)描述
port端口號,或 0 使用自動分配的端口號。

Throws:

Throw名稱Throw描述
IOException如果在打開套接字時發(fā)生 I/O 錯誤。
SecurityException如果安全管理器存在并且其 checkListen 方法不允許該操作。
IllegalArgumentException如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。

ServerSocket

public ServerSocket(int port, int backlog) throws IOException

創(chuàng)建一個服務器套接字并將其綁定到指定的本地端口號,并具有指定的 backlog。端口號 0 表示端口號是自動分配的,通常來自臨時端口范圍。然后可以通過調(diào)用 getLocalPort 檢索此端口號。

傳入連接指示(連接請求)的最大隊列長度設置為 backlog 參數(shù)。如果隊列滿時有連接指示到達,則拒絕連接。

如果應用程序指定了服務器套接字工廠,則調(diào)用該工廠的 createSocketImpl 方法來創(chuàng)建實際的套接字實現(xiàn)。否則會創(chuàng)建一個“普通”套接字。

如果有安全管理器,則調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。這可能會導致 SecurityException。 backlog 參數(shù)是套接字上請求的最大掛起連接數(shù)。它的確切語義是特定于實現(xiàn)的。特別地,實現(xiàn)可以強加最大長度或者可以選擇完全忽略參數(shù)。提供的值應大于 0。如果小于或等于 0,則將使用特定于實現(xiàn)的默認值。

參數(shù):

參數(shù)名稱參數(shù)描述
port端口號,或 0 使用自動分配的端口號。
backlog請求的傳入連接隊列的最大長度。

Throws:

Throw名稱Throw描述
IOException如果在打開套接字時發(fā)生 I/O 錯誤。
SecurityException如果安全管理器存在并且其 checkListen 方法不允許該操作。
IllegalArgumentException如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。

ServerSocket

public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException

創(chuàng)建具有指定端口、偵聽積壓和要綁定的本地 IP 地址的服務器。 bindAddr 參數(shù)可用于多宿主主機上的 ServerSocket,它只接受對其地址之一的連接請求。如果 bindAddr 為空,它將默認接受任何/所有本地地址上的連接。端口必須介于 0 和 65535 之間(包括 0 和 65535)。端口號 0 表示端口號是自動分配的,通常來自臨時端口范圍。然后可以通過調(diào)用 getLocalPort 檢索此端口號。

如果有安全管理器,則此方法調(diào)用其 checkListen 方法,并將端口參數(shù)作為其參數(shù),以確保允許該操作。這可能會導致 SecurityException。 backlog 參數(shù)是套接字上請求的最大掛起連接數(shù)。它的確切語義是特定于實現(xiàn)的。特別地,實現(xiàn)可以強加最大長度或者可以選擇完全忽略參數(shù)。提供的值應大于 0。如果小于或等于 0,則將使用特定于實現(xiàn)的默認值。

參數(shù):

參數(shù)名稱參數(shù)描述
port端口號,或 0 使用自動分配的端口號。
backlog請求的傳入連接隊列的最大長度。
bindAddr服務器將綁定到的本地 InetAddress

Throws:

Throw名稱Throw描述
SecurityException如果安全管理器存在并且其 checkListen 方法不允許該操作。
IOException如果在打開套接字時發(fā)生 I/O 錯誤。
IllegalArgumentException如果端口參數(shù)超出指定的有效端口值范圍,即介于 0 和 65535 之間(包括 0 和 65535)。

方法詳情

bind

public void bind(SocketAddress endpoint) throws IOException

將 ServerSocket 綁定到特定地址(IP 地址和端口號)。

如果地址為空,那么系統(tǒng)將選擇一個臨時端口和一個有效的本地地址來綁定套接字。

參數(shù):

參數(shù)名稱參數(shù)描述
endpoint要綁定的 IP 地址和端口號。

Throws:

Throw名稱Throw描述
IOException如果綁定操作失敗,或者套接字已經(jīng)綁定。
SecurityException如果存在 SecurityManager 并且其 checkListen 方法不允許該操作。
IllegalArgumentException如果端點是此套接字不支持的 SocketAddress 子類

bind

public void bind(SocketAddress endpoint, int backlog) throws IOException

將 ServerSocket 綁定到特定地址(IP 地址和端口號)。

如果地址為空,那么系統(tǒng)將選擇一個臨時端口和一個有效的本地地址來綁定套接字。

backlog 參數(shù)是套接字上請求的最大掛起連接數(shù)。 它的確切語義是特定于實現(xiàn)的。 特別地,實現(xiàn)可以強加最大長度或者可以選擇完全忽略參數(shù)。 提供的值應大于 0。如果小于或等于 0,則將使用特定于實現(xiàn)的默認值。

參數(shù):

參數(shù)名稱參數(shù)描述
endpoint要綁定的 IP 地址和端口號。
backlog請求的傳入連接隊列的最大長度。

Throws:

Throw名稱Throw描述
IOException如果綁定操作失敗,或者套接字已經(jīng)綁定。
SecurityException如果存在 SecurityManager 并且其 checkListen 方法不允許該操作。
IllegalArgumentException如果端點是此套接字不支持的 SocketAddress 子類

getInetAddress

public InetAddress getInetAddress()

返回此服務器套接字的本地地址。

如果socket在關閉之前就綁定了,那么這個方法會在socket關閉后繼續(xù)返回本地地址。

如果設置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回 InetAddress#getLoopbackAddress 地址。

返回:

此套接字綁定到的地址,如果安全管理器拒絕,則返回環(huán)回地址,如果套接字未綁定,則返回 null。

getLocalPort

public int getLocalPort()

返回此套接字正在偵聽的端口號。

如果套接字在關閉之前已綁定,則此方法將在套接字關閉后繼續(xù)返回端口號。

返回:

此套接字正在偵聽的端口號,如果尚未綁定套接字,則為 -1。

getLocalSocketAddress

public SocketAddress getLocalSocketAddress()

返回此套接字綁定到的端點的地址。

如果套接字在關閉之前已綁定,則該方法將在套接字關閉后繼續(xù)返回端點的地址。

如果設置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回代表 InetAddress#getLoopbackAddress 地址和套接字綁定的本地端口的 SocketAddress。

返回:

表示此套接字的本地端點的 SocketAddress,如果安全管理器拒絕,則表示環(huán)回地址的 SocketAddress,如果尚未綁定套接字,則返回 null。

accept

public Socket accept() throws IOException

偵聽要與此套接字建立的連接并接受它。 該方法阻塞,直到建立連接。

創(chuàng)建一個新的 Socket s,如果有安全管理器,則使用 s.getInetAddress().getHostAddress() 和 s.getPort() 作為其參數(shù)調(diào)用安全管理器的 checkAccept 方法,以確保允許操作。 這可能會導致 SecurityException。

返回:

新的 Socket

Throws:

Throw名稱Throw描述
IOException如果在等待連接時發(fā)生 I/O 錯誤。
SecurityException如果存在安全管理器并且其 checkAccept 方法不允許該操作。
SocketTimeoutException如果先前使用 setSoTimeout 設置了超時并且已達到超時。
IllegalBlockingModeException如果此套接字有關聯(lián)的通道,則通道處于非阻塞模式,并且沒有準備好接受的連接

implAccept

protected final void implAccept(Socket s) throws IOException

ServerSocket 的子類使用此方法覆蓋 accept() 以返回它們自己的套接字子類。 所以 FooServerSocket 通常會給這個方法一個空的 FooSocket。 從 implAccept 返回時,F(xiàn)ooSocket 將連接到客戶端。

參數(shù):

參數(shù)名稱參數(shù)描述
s套接字

Throws:

Throw名稱Throw描述
IllegalBlockingModeException如果此套接字具有關聯(lián)的通道,并且該通道處于非阻塞模式
IOException如果在等待連接時發(fā)生 I/O 錯誤。

close

public void close() throws IOException

關閉此套接字。 當前在 accept() 中阻塞的任何線程都會拋出 SocketException。

如果此套接字具有關聯(lián)的通道,則該通道也將關閉。

指定者:

在接口 AutoCloseable 中關閉

指定者:

在接口Closeable中關閉

Throws:

Throw名稱Throw描述
IOException如果關閉套接字時發(fā)生 I/O 錯誤。

getChannel

public ServerSocketChannel getChannel()

返回與此套接字關聯(lián)的唯一 ServerSocketChannel 對象(如果有)。

當且僅當通道本身是通過 ServerSocketChannel.open 方法創(chuàng)建時,服務器套接字才會有通道。

返回:

與此套接字關聯(lián)的服務器套接字通道,如果此套接字不是為通道創(chuàng)建的,則為 null

isBound

public boolean isBound()

返回 ServerSocket 的綁定狀態(tài)。

返回:

如果 ServerSocket 成功綁定到地址,則為 true

isClosed

public boolean isClosed()

返回 ServerSocket 的關閉狀態(tài)。

返回:

如果套接字已關閉,則為 true

setSoTimeout

public void setSoTimeout(int timeout) throws SocketException

使用指定的超時啟用/禁用 SocketOptions#SO_TIMEOUT,以毫秒為單位。 將此選項設置為非零超時,對此 ServerSocket 的 accept() 調(diào)用將僅阻塞此時間量。 如果超時到期,則會引發(fā) java.net.SocketTimeoutException,盡管 ServerSocket 仍然有效。 必須在進入阻塞操作之前啟用該選項才能生效。 超時必須 > 0。超時為零被解釋為無限超時。

參數(shù):

參數(shù)名稱參數(shù)描述
timeout指定的超時時間,以毫秒為單位

Throws:

Throw名稱Throw描述
SocketException如果底層協(xié)議有錯誤,例如 TCP 錯誤。

getSoTimeout

public int getSoTimeout() throws IOException

檢索 SocketOptions#SO_TIMEOUT 的設置。 返回 0 表示該選項被禁用(即無限超時)。

返回:

SocketOptions#SO_TIMEOUT 值

Throws:

Throw名稱Throw描述
IOException如果發(fā)生 I/O 錯誤

setReuseAddress

public void setReuseAddress(boolean on) throws SocketException

啟用/禁用 SocketOptions#SO_REUSEADDR 套接字選項。

當 TCP 連接關閉時,連接可能會在連接關閉后的一段時間內(nèi)保持超時狀態(tài)(通常稱為 TIME_WAIT 狀態(tài)或 2MSL 等待狀態(tài))。 對于使用眾所周知的套接字地址或端口的應用程序,如果存在涉及套接字地址或端口的處于超時狀態(tài)的連接,則可能無法將套接字綁定到所需的 SocketAddress。

在使用 bind(java.net.SocketAddress) 綁定套接字之前啟用 SocketOptions#SO_REUSEADDR 允許綁定套接字,即使先前的連接處于超時狀態(tài)。

創(chuàng)建 ServerSocket 時,未定義 SocketOptions#SO_REUSEADDR 的初始設置。 應用程序可以使用 getReuseAddress() 來確定 SocketOptions#SO_REUSEADDR 的初始設置。

未定義套接字綁定后啟用或禁用 SocketOptions#SO_REUSEADDR 時的行為。

參數(shù):

參數(shù)名稱參數(shù)描述
on是否啟用或禁用套接字選項

Throws:

Throw名稱Throw描述
SocketException如果啟用或禁用 SocketOptions#SO_REUSEADDR 套接字選項發(fā)生錯誤,或者套接字已關閉。

getReuseAddress

public boolean getReuseAddress() throws SocketException

測試 SocketOptions#SO_REUSEADDR 是否啟用。

返回:

一個布爾值,指示是否啟用 SocketOptions#SO_REUSEADDR。

Throws:

Throw名稱Throw描述
SocketException如果底層協(xié)議有錯誤,例如 TCP 錯誤。

toString

public String toString()

以 String 形式返回此套接字的實現(xiàn)地址和實現(xiàn)端口。

如果設置了安全管理器,則使用本地地址和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回一個表示 InetAddress#getLoopbackAddress 地址的 InetAddress 作為實現(xiàn)地址。

覆蓋:

類 Object 中的 toString

返回:

此套接字的字符串表示形式。

setSocketFactory

public static void setSocketFactory(SocketImplFactory fac) throws IOException

為應用程序設置服務器套接字實現(xiàn)工廠。 工廠只能指定一次。

當應用程序創(chuàng)建新的服務器套接字時,會調(diào)用套接字實現(xiàn)工廠的 createSocketImpl 方法來創(chuàng)建實際的套接字實現(xiàn)。

除非已經(jīng)設置了工廠,否則將 null 傳遞給方法是無操作的。

如果有安全管理器,該方法首先調(diào)用安全管理器的 checkSetFactory 方法,確保操作被允許。 這可能會導致 SecurityException。

參數(shù):

參數(shù)名稱參數(shù)描述
fac想要的工廠。

Throws:

Throw名稱Throw描述
IOException如果設置套接字工廠時發(fā)生 I/O 錯誤。
SocketException如果工廠已經(jīng)定義。
SecurityException如果存在安全管理器并且其 checkSetFactory 方法不允許該操作。

setReceiveBufferSize

public void setReceiveBufferSize(int size) throws SocketException

為從此 ServerSocket 接受的套接字設置 SocketOptions#SO_RCVBUF 選項的默認建議值。在接受的套接字中實際設置的值必須在接受()返回套接字后通過調(diào)用Socket#getReceiveBufferSize()來確定。

SocketOptions#SO_RCVBUF 的值既用于設置內(nèi)部套接字接收緩沖區(qū)的大小,也用于設置通告給遠程對等方的 TCP 接收窗口的大小。

隨后可以通過調(diào)用 Socket#setReceiveBufferSize(int) 來更改該值。但是,如果應用程序希望允許大于 64K 字節(jié)的接收窗口(如 RFC1323 所定義),則必須在 ServerSocket 中設置建議的值,然后才能將其綁定到本地地址。這意味著,必須使用無參數(shù)構(gòu)造函數(shù)創(chuàng)建 ServerSocket,然后必須調(diào)用 setReceiveBufferSize(),最后通過調(diào)用 bind() 將 ServerSocket 綁定到地址。

不這樣做不會導致錯誤,并且緩沖區(qū)大小可能會設置為請求的值,但從該 ServerSocket 接受的套接字中的 TCP 接收窗口將不大于 64K 字節(jié)。

參數(shù):

參數(shù)名稱參數(shù)描述
size設置接收緩沖區(qū)大小的大小。 該值必須大于 0。

Throws:

Throw名稱Throw描述
SocketException如果底層協(xié)議有錯誤,例如 TCP 錯誤。
IllegalArgumentException如果值為 0 或為負數(shù)。

getReceiveBufferSize

public int getReceiveBufferSize() throws SocketException

獲取此 ServerSocket 的 SocketOptions#SO_RCVBUF 選項的值,即用于從該 ServerSocket 接受的套接字的建議緩沖區(qū)大小。

注意,在接受的套接字中實際設置的值是通過調(diào)用 Socket#getReceiveBufferSize() 確定的。

返回:

此 Socket 的 SocketOptions#SO_RCVBUF 選項的值。

Throws:

Throw名稱Throw描述
SocketException如果底層協(xié)議有錯誤,例如 TCP 錯誤。

setPerformancePreferences

public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)

設置此 ServerSocket 的性能首選項。

套接字默認使用 TCP/IP 協(xié)議。一些實現(xiàn)可能會提供與 TCP/IP 具有不同性能特征的替代協(xié)議。此方法允許應用程序表達自己的偏好,即當實現(xiàn)從可用協(xié)議中進行選擇時應如何進行這些權衡。

性能偏好由三個整數(shù)描述,其值表示短連接時間、低延遲和高帶寬的相對重要性。整數(shù)的絕對值無關緊要;為了選擇一個協(xié)議,這些值被簡單地比較,較大的值表示更強的偏好。例如,如果應用程序更喜歡短連接時間而不是低延遲和高帶寬,那么它可以使用值 (1, 0, 0) 調(diào)用此方法。如果應用程序更喜歡高帶寬而不是低延遲,以及低延遲而不是短連接時間,那么它可以使用值 (0, 1, 2) 調(diào)用此方法。

綁定此套接字后調(diào)用此方法將無效。這意味著為了使用此功能,需要使用無參數(shù)構(gòu)造函數(shù)創(chuàng)建套接字。

參數(shù):

參數(shù)名稱參數(shù)描述
connectionTime表示短連接時間的相對重要性的 int
latency一個表示低延遲相對重要性的 int
bandwidth表示高帶寬相對重要性的 int

當前文章:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS ServerSocket
文章出自:http://www.dlmjj.cn/article/dheosps.html