- JDK 在 java.net 包中為 TCP 和 UDP 兩種通信協議提供了相應的 Socket 編程類
- TCP 協議,服務端對應 ServerSocket,客戶端對應 Socket
- UDP 協議對應 DatagramSocket
- 基於 TCP 協議創建的套接字可以叫做流套接字,服務器端相當於一個監聽器,用來監聽端口,服務器與客服端之間的通訊都是輸入輸出流來實現的
- 基於 UDP 協議的套接字就是數據報套接字,客戶端和服務端都要先構造好相應的數據包
基於 TCP 協議的 Socket 編程的主要步驟
服務端:
- 指定本地的端口創建 ServerSocket 實例, 用來監聽指定端口的連接請求
- 通過 accept() 方法返回的 Socket 實例,建立了一個和客戶端的新連接
- 通過 Sockect 實例獲取 InputStream 和 OutputStream 讀寫數據
- 數據傳輸結束,調用 socket 實例的 close() 方法關閉連接
客戶端:
- 指定的遠程服務器 IP 地址和端口創建 Socket 實例
- 通過 Socket 實例獲取 InputStream 和 OutputStream 來進行數據的讀寫
- 數據傳輸結束,調用 socket 實例的 close() 方法關閉連接
基於 UDP 協議的 Socket 編程的主要步驟
服務端:
- 指定本地端口創建 DatagramSocket 實例
- 通過字節數組,創建 DatagramPacket 實例,調用 DatagramSocket 實例的 receive() 方法,用 DatagramPacket 實例來接收數據
- 設置 DatagramPacket 實例返回的數據,調用 DatagramSocket 實例的 send() 方法來發送數據
- 數據傳輸完成,調用 DatagramSocket 實例的 close() 方法
客戶端:
- 創建 DatagramSocket 實例
- 通過 IP 地址端口和數據創建 DatagramSocket 實例,調用 DatagramSocket 實例 send() 方法發送數據包
- 通過字節數組創建 DatagramSocket 實例,調用 DatagramSocket 實例 receive() 方法接受數據包
- 數據傳輸完成,調用 DatagramSocket 實例的 close() 方法