ServerSocket 類用於提供客戶端/服務器套接字連接的服務器端的係統獨立實現。如果 ServerSocket 的構造函數無法偵聽指定端口(例如,該端口已被使用),則會引發異常。
它的應用非常廣泛,所以java.net.ServerSocket類的應用如下:
- 在java.nio通道中,ServerSocket類用於檢索與該通道關聯的serverSocket。
- 在java.rmi.Server中,ServerSocket類用於在指定端口(端口0表示匿名端口)上創建服務器套接字。
- 在javax.net中,服務器套接字被廣泛使用,以便:
- 返回未綁定的服務器套接字。
- 返回綁定到指定端口的服務器套接字。
- 返回綁定到指定端口的服務器套接字,並使用指定的連接積壓。
- 返回綁定到指定端口的服務器套接字,具有指定的偵聽積壓和本地 IP。
讓我們來看看這個類的方法如下:
方法 | 說明 |
---|---|
accept() | 偵聽與此套接字建立的連接並接受它。 |
bind(SocketAddress endpoint) | 將 ServerSocket 綁定到特定地址(IP 地址和端口號)。 |
綁定(SocketAddress端點,int積壓) | 將 ServerSocket 綁定到特定地址(IP 地址和端口號)並請求隊列長度。如果請求在隊列已滿時到達,則該請求將被服務器拒絕。 |
close() | 關閉此套接字 |
getChannel() | 返回與此套接字關聯的唯一ServerSocketChannel 對象(如果有)。 |
getInetAddress() | 返回此服務器套接字的本地地址。 |
getLocalPort() | 返回此套接字正在偵聽的端口號。 |
getLocalSocketAddress() | 返回此套接字綁定到的端點的地址,如果尚未綁定,則返回 null。 |
getReceiveBufferSize() | 獲取此 ServerSocket 的 SO_RCVBUF 選項的值,即用於從此 ServerSocket 接受的套接字的建議緩衝區大小。 |
getReuseAddress() | 測試是否啟用SO_REUSEADDR。 |
getSoTimeout() | 檢索SO_TIMEOUT的設置。 |
implAccept(Socket s) | ServerSocket 的子類使用此方法覆蓋 accept() 以返回它們自己的子類 插座。 |
isBound() | 返回 ServerSocket 的綁定狀態。 |
isClosed() | 返回 ServerSocket 的關閉狀態。 |
setPerformancePreferences(int connectionTime, int latency, int bandwidth) | 為此ServerSocket 設置性能首選項 |
為此ServerSocket 設置性能首選項 | 為從此 ServerSocket 接受的套接字設置 SO_RCVBUF 選項的默認建議值。 |
setReuseAddress(boolean on) | 啟用/禁用 SO_REUSEADDR 套接字選項。 |
setSocketFactory(SocketImplFactory fac) | 設置應用程序的服務器套接字實現工廠。 |
setSoTimeout(int timeout) | 使用指定的超時(以毫秒為單位)啟用/禁用SO_TIMEOUT。 |
toString() | 以字符串形式返回此套接字的實現地址和實現端口。 |
implementation:
示例 1服務器端
Java
// Java Program to implement ServerSocket class
// Server Side
// Importing required libraries
import java.io.*;
import java.net.*;
// Main class
public class MyServer {
// Main driver method
public static void main(String[] args)
{
// Try block to check for exceptions
try {
// Creating an object of ServerSocket class
// in the main() method for socket connection
ServerSocket ss = new ServerSocket(6666);
// Establishing a connection
Socket soc = ss.accept();
// Invoking input stream via getInputStream()
// method by creating DataInputStream class
// object
DataInputStream dis
= new DataInputStream(soc.getInputStream());
String str = (String)dis.readUTF();
// Display the string on the console
System.out.println("message= " + str);
// Lastly close the socket using standard close
// method to release memory resources
ss.close();
}
// Catch block to handle the exceptions
catch (Exception e) {
// Display the exception on the console
System.out.println(e);
}
}
}
輸出:
示例 2客戶端
Java
// Java Program to implement ServerSocket class
// Client - side
// Importing required libraries
import java.io.*;
import java.net.*;
// Main class
public class MyClient {
// Main driver method
public static void main(String[] args)
{
// Try block to check if exception occurs
try {
// Creating Socket class object and
// initializing Socket
Socket soc = new Socket("localhost", 6666);
DataOutputStream d = new DataOutputStream(
soc.getOutputStream());
// Message to be displayed
d.writeUTF("Hello GFG Readers!");
// Flushing out internal buffers,
// optimizing for better performance
d.flush();
// Closing the connections
// Closing DataOutputStream
d.close();
// Closing socket
soc.close();
}
// Catch block to handle exceptions
catch (Exception e) {
// Print the exception on the console
System.out.println(e);
}
}
}
輸出:
相關用法
- Java java.net.SecureCacheResponse用法及代碼示例
- Java java.net.SocketException用法及代碼示例
- Java java.net.SocketOption用法及代碼示例
- Java java.net.SocketImplFactory用法及代碼示例
- Java java.net.Socket用法及代碼示例
- Java java.net.Proxy用法及代碼示例
- Java java.net.ProxySelector用法及代碼示例
- Java java.net.ProtocolFamily用法及代碼示例
- Java java.net.CookiePolicy用法及代碼示例
- Java java.net.CacheResponse用法及代碼示例
- Java java.net.ResponseCache用法及代碼示例
- Java java.net.URLPermission用法及代碼示例
- Java java.net.NetPermission用法及代碼示例
- Java java.net.CacheRequest用法及代碼示例
- Java java.net.FileNameMap用法及代碼示例
- Java java.net.CookieStore用法及代碼示例
- Java java.net.PasswordAuthentication用法及代碼示例
- Java java.net.CookieHandler用法及代碼示例
- Java java.net.CookieManager用法及代碼示例
- Java java.net.BindException用法及代碼示例
- Java java.net.URLConnection用法及代碼示例
- Java java.net.InetAddress用法及代碼示例
- Java java.nio.ByteBuffer用法及代碼示例
- Java java.nio.IntBuffer用法及代碼示例
- Java java.nio.file.FileStore用法及代碼示例
注:本文由純淨天空篩選整理自ravi.geek24大神的英文原創作品 java.net.ServerSocket Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。