Socket(套接字)是網絡通信的基石,封裝了 TCP/IP 協議族,提供應用層與傳輸層的交互接口。每個 Socket 包含五大要素:協議、本地 IP、本地端口、遠程 IP、遠程端口,唯一標識一個網絡通信端點。
通過 Socket 接口,多個應用進程可共享同一 TCP 端口實現並發通信,操作系統負責區分不同連接的數據流。
Socket client = new Socket("localhost", 5000);
指定服務端 IP 和端口,發起 TCP 三次握手。
PrintStream out = new PrintStream(socket.getOutputStream());
out.println("Hello Server");
PrintStream 提供便捷的行級發送,自動處理換行符。
BufferedReader buf = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String response = buf.readLine();
使用緩衝讀取器高效讀取文本數據。
socket.close();
釋放端口、緩衝區等系統資源,發起 TCP 四次揮手。
ServerSocket server = new ServerSocket(8888);
System.out.println("服務器運行,等待客戶端連接...");
Socket client = server.accept(); // 阻塞等待
PrintStream out = new PrintStream(client.getOutputStream());
out.println("helloworld"); // 發送響應
client.close();
server.close();
關鍵點:accept() 會阻塞直到有客戶端連接,返回的 Socket 專門用於與該客戶端通信。
accept(),每個客戶端分配工作線程IOException,確保流與 Socket 正確關閉<uses-permission android:name="android.permission.INTERNET" />掌握 Socket 通信是移動端即時消息、物聯網控制、文件傳輸等功能的基礎。建議進一步學習 Netty、OkIO 等高性能網絡框架,提升開發效率與系統穩定性。