Socket與ServerSocket類構造方法與API
Socket類
概述:
socket可以使一個應用從網絡中讀取和寫入數據,不同計算機上的兩個應用可以通過連接發送和接受字節流,當發送消息時,你需要知道對方的ip和端口,在java中,socket指的是java.net.Socket類。
構造方法:
ServerSocket() | 創建一個綁定服務器套接字 |
ServerSocket(int port) | 創建一個服務器套接字,綁定到指定的端口 |
ServerSocket(int port, int backlog) | 創建一個服務器套接字,並將其綁定到指定的本地端口號,並使用指定的積壓 |
ServerSocket(int port, int backlog, InetAddress bindAddr) | 用指定的端口創建一個服務器,聽積壓,和本地IP地址綁定 |
API:
Socket accept() | 監聽要對這個套接字作出的連接並接受它 |
void bind(SocketAddress endpoint) | ServerSocket綁定到一個特定的地址(IP地址和端口號) |
void bind(SocketAddress endpoint, int backlog) | ServerSocket綁定到一個特定的地址(IP地址和端口號) |
void close() | 關閉這個套接字。 |
ServerSocketChannel getChannel() | 返回與此套接字關聯的獨特的 ServerSocketChannel對象,如果任何 |
InetAddress getInetAddress() | 返回此服務器套接字的本地地址 |
int getLocalPort() | 返回此套接字正在偵聽的端口號 |
SocketAddress getLocalSocketAddress() | 返回此套接字綁定到的端點的地址 |
int getReceiveBufferSize() | 得到這個 ServerSocket的 SO_RCVBUF期權的價值,即該緩沖區的大小,將用於接受來自這 ServerSocket插座 |
boolean getReuseAddress() | 如果 SO_REUSEADDR啟用 |
int getSoTimeout() | 檢索設置 SO_TIMEOUT |
protected void implAccept(Socket s) | 子類使用此方法重載ServerSocket()返回自己的子類的插座 |
boolean isBound() | 返回的ServerSocket綁定狀態 |
boolean isClosed() | 返回的ServerSocket關閉狀態 |
void setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 設置此ServerSocket性能偏好 |
void setReceiveBufferSize(int size) | 設置一個默認值為提出接受這 ServerSocket插座 SO_RCVBUF選項 |
void setReuseAddress(boolean on) | 啟用/禁用 SO_REUSEADDR套接字選項 |
static void setSocketFactory(SocketImplFactory fac) | 設置服務器套接字實現工廠為應用程序。 |
void setSoTimeout(int timeout) | 啟用/禁用 SO_TIMEOUT以指定的超時時間,以毫秒為單位 |
String toString() | 返回此套接字作為 String實現的地址與端口 |
ServerSocket類
概述:
Socket類代表一個客戶端套接字,即任何時候連接到一個遠程服務器應用時構建所需的socket。現在,要實現一個服務器應用,需要不同的做法。服務器需隨時待命,因為不知道客戶端什麼時候會發來請求,此時,我們需要使用ServerSocket,對應的是java.net.ServerSocket類。
ServerSocket與Socket不同,ServerSocket是等待客戶端的請求,一旦獲得一個連接請求,就創建一個Socket示例來與客戶端進行通信。
構造方法:
Socket() | 創建一個連接的套接字,與socketimpl系統默認的類型。 |
Socket(InetAddress address, int port) | 創建一個流套接字,並將其與指定的IP地址中的指定端口號連接起來。 |
Socket(InetAddress host, int port, boolean stream) | 過時的。 使用UDP傳輸DatagramSocket。 |
Socket(InetAddress address, int port, InetAddress localAddr, int localPort) | 創建一個套接字,並將其與指定的遠程端口上的指定的遠程地址連接起來。 |
Socket(Proxy proxy) | 創建一個連接的套接字類型,指定代理,如果有,應該使用無論任何其他設置。 |
protected Socket(SocketImpl impl) | 創建一個用戶指定的socketimpl連接插座。 |
Socket(String host, int port) | 創建一個流套接字,並將其與指定的主機上的指定端口號連接起來。 |
Socket(String host, int port, boolean stream) | 過時的。 使用UDP傳輸DatagramSocket。 |
Socket(String host, int port, InetAddress localAddr, int localPort) | 創建一個套接字,並將其連接到指定的遠程端口上的指定的遠程主機上 |
API:
void bind(SocketAddress bindpoint) | 將套接字綁定到本地地址。 |
void close() | 關閉這個套接字。 |
void connect(SocketAddress endpoint) | 將此套接字連接到服務器。 |
void connect(SocketAddress endpoint, int timeout) | 將此套接字與指定的超時值連接到服務器。 |
SocketChannel getChannel() | 返回與此套接字關聯的獨特的 SocketChannel對象,如果任何。 |
InetAddress getInetAddress() | 返回套接字連接的地址。 |
InputStream getInputStream() | 返回此套接字的輸入流。 |
boolean getKeepAlive() | 如果 SO_KEEPALIVE啟用。 |
InetAddress getLocalAddress() | 獲取綁定的套接字的本地地址。 |
int getLocalPort() | 返回此套接字綁定的本地端口號。 |
SocketAddress getLocalSocketAddress() | 返回此套接字綁定到的端點的地址。 |
boolean getOOBInline() | 如果 SO_OOBINLINE啟用。 |
OutputStream getOutputStream() | 返回此套接字的輸出流。 |
int getPort() | 返回此套接字連接的遠程端口號。 |
int getReceiveBufferSize() | 得到這個 Socket的 SO_RCVBUF選項的值,是由平臺用於該 Socket輸入緩沖區的大小。 |
SocketAddress getRemoteSocketAddress() | 返回此套接字連接的端點的地址,或如果它是無關的 null。 |
boolean getReuseAddress() | 如果 SO_REUSEADDR啟用。 |
int getSendBufferSize() | 得到這個 Socket的 SO_SNDBUF期權價值,即緩沖區的大小由平臺用於輸出在這 Socket。 |
int getSoLinger() | 返回設置 SO_LINGER。 |
int getSoTimeout() | 返回設置 SO_TIMEOUT。 |
boolean getTcpNoDelay() | 如果 TCP_NODELAY啟用。 |
int getTrafficClass() | 獲取從這個套接字發送的數據包的IP頭中的業務類或服務類型 |
boolean isBound() | 返回套接字的綁定狀態。 |
boolean isClosed() | 返回套接字的關閉狀態。 |
boolean isConnected() | 返回套接字的連接狀態。 |
boolean isInputShutdown() | 返回套接字連接的讀半是否關閉。 |
boolean isOutputShutdown() | 返回套接字連接的寫是否關閉的是否關閉。 |
void sendUrgentData(int data) | 在套接字上發送一個字節的緊急數據。 |
void setKeepAlive(boolean on) | 啟用/禁用 SO_KEEPALIVE。 |
void setOOBInline(boolean on) | 啟用/禁用 SO_OOBINLINE(TCP緊急數據收據)默認情況下,此選項是禁用TCP套接字上接收緊急數據是默默丟棄。 |
void setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 設置此套接字的性能首選項。 |
void setReceiveBufferSize(int size) | 集 SO_RCVBUF選項,這 Socket指定值。 |
void setReuseAddress(boolean on) | 啟用/禁用 SO_REUSEADDR套接字選項。 |
void setSendBufferSize(int size) | 設置這個 Socket指定值的 SO_SNDBUF選項。 |
static void setSocketImplFactory(SocketImplFactory fac) | 設置客戶端套接字實現工廠的應用程序。 |
void setSoLinger(boolean on, int linger) | 啟用/禁用 SO_LINGER與指定的逗留的時間秒。 |
void setSoTimeout(int timeout) | 啟用/禁用 SO_TIMEOUT以指定的超時時間,以毫秒為單位。 |
void setTcpNoDelay(boolean on) | 啟用/禁用 TCP_NODELAY(禁用/啟用Nagle的算法)。 |
void setTrafficClass(int tc) | 集交通類或從該套接字發送數據包的IP報頭字節型服務。 |
void shutdownInput() | 將此套接字的輸入流放在“流結束”中。 |
void shutdownOutput() | 禁用此套接字的輸出流。 |
String toString() | 將這一 String插座 |
到此這篇關於Socket與ServerSocket類構造方法與API的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 客戶端Socket與服務端ServerSocket串聯實現網絡通信
- Java面試Socket編程常用參數設置源碼問題分析
- Java基於TCP協議的Socket通信
- Java Socket設置timeout的幾種常用方式說明
- 基於Java的Scoket編程