首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java TCP Socket 編程實戰:客戶端與服務端通信完整示例

     編輯:Java 程式設計入門

概述

本文展示基於 TCP 協議的 Java Socket 雙向通信最小化實現。服務端監聽 8888 端口,客戶端連接後發送 "Connect",服務端回應 "Hello!",雙方均在控制台輸出接收內容。

服務端實現 (TCPServer)

關鍵步驟

  1. 創建 ServerSocket 綁定端口 8888
  2. 調用 accept() 阻塞等待客戶端連接
  3. 獲取輸入流,包裝為 DataInputStream 讀取 UTF 字符串
  4. 獲取輸出流,包裝為 DataOutputStream 寫入回應並 flush()
  5. 異常捕獲與資源關閉(簡化示例中省略 finally 關閉,生產環境必須補全)

核心代碼片段

ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println(dis.readUTF()); // 輸出 "Connect"

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("Hello!");
dos.flush();

客戶端實現 (TCPClient)

關鍵步驟

  1. 創建 Socket 連接服務端 IP(示例為 192.168.1.123)與端口
  2. 獲取輸出流發送 "Connect"
  3. 獲取輸入流讀取服務端回應並輸出
  4. 分別捕獲 UnknownHostException 與 IOException

核心代碼片段

Socket socket = new Socket("192.168.1.123", 8888);
DataOutputStream bos = new DataOutputStream(socket.getOutputStream());
bos.writeUTF("Connect");
bos.flush();

DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println(dis.readUTF()); // 輸出 "Hello!"

運行與測試

  1. 先啟動 TCPServer 主方法,控制台顯示等待連接
  2. 再啟動 TCPClient,觀察雙向輸出
  3. 局域網測試請將客戶端 IP 替換為服務端實際內網 IP

生產環境擴展建議

  • 使用線程池處理多客戶端併發(單線程 accept() 僅支援單連接)
  • 引入心跳機制檢測連接存活
  • 序列化協議升級為 Protobuf/JSON 替代 DataInput/OutputStream
  • 完善資源關閉邏輯(try-with-resources)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved