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

Java 網絡編程基礎:TCP/UDP、Socket 通信模型與代碼實戰

     編輯:Java 相關知識

1. 核心概念區分

  • 進程:靜態代碼實體(.class/.exe)。
  • 線程:進程內執行路徑,主線程 main()。
  • 並發本質:單 CPU 時間片輪轉,多核才真並行。

2. 協議分層與參考模型

  • OSI 七層 / TCP/IP 四層模型。
  • IP 協議:唯一地址(4 字節,每段 0-255)。
  • TCP:可靠、面向連接(像打電話),三次握手。
  • UDP:不可靠、無連接(像發電報),速度快。

3. Socket 編程模型

Socket = IP + Port。雙方各綁一個 Socket,建立連接通道。

  • ServerSocket:伺服端監聽端口,accept() 阻塞等待連接。
  • Socket:客戶端發起連接,雙向流通信。
  • 端口 0-1023 系統保留,自定義用 1024+。

4. TCP 通信代碼實戰

伺服端

ServerSocket ss = new ServerSocket(6666);
while (true) {
    Socket s = ss.accept(); // 阻塞
    DataInputStream dis = new DataInputStream(s.getInputStream());
    String msg = dis.readUTF(); // 阻塞讀取
    System.out.println(msg);
}

客戶端

Socket s = new Socket("127.0.0.1", 6666);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
Thread.sleep(30000); // 模擬延遲
dos.writeUTF("Hello Server!");

5. 關鍵問題與改進

  • accept()/read() 阻塞導致單線程無法併發 → 需多線程/線程池/NIO。
  • UDP 使用 DatagramSocket/DatagramPacket,無連接狀態。

總結

掌握 TCP/UDP 差異、Socket 模型、阻塞 I/O 特性,是進階 Netty、NIO、微服務通信的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved