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

Java DatagramSocket/UDP 無連線通訊實作指南

     編輯:Java 相關知識

資料報 為無連線、不可靠的網路傳輸單元,適合不要求高可靠度的即時應用。Java java.net 套件提供 DatagramSocket 與 DatagramPacket 兩大核心類別實現 UDP 通訊。

客戶端工作流程

  1. 建立 DatagramSocket (繫結任意或指定埠)。
  2. 建立發送用 DatagramPacket:封裝資料、目標 IP、目標埠。
  3. 呼叫 socket.send(packet) 發送。
  4. 建立接收用 DatagramPacket (僅指定緩衝區大小)。
  5. 呼叫 socket.receive(packet) 阻塞等待回應。
  6. 從封包取得資料、來源 IP、來源埠進行處理。
  7. 通訊結束調用 socket.close() 釋放資源。

伺服器端異同

流程對稱,差異在於:

  • 伺服器固定繫結知名埠 (如 5000) 監聽。
  • 收到封包後解析 packet.getAddress()、getPort() 取得客戶端位址,構建回覆封包回送。
  • 面向所有客戶端,無連線狀態維護。

完整範例程式

客戶端 Applet:繫結埠 5001 接收,向 202.38.64.4:5000 發送。介面含訊息顯示區與輸入框,按 Enter 發送。

伺服器端 Frame:繫結埠 5000 接收,顯示客戶端 IP/埠與訊息,回覆發送至客戶端 5001 埠。

// 發送關鍵代碼
byte[] data = msg.getBytes();
DatagramPacket pkt = new DatagramPacket(data, data.length, InetAddress.getByName("202.38.64.4"), 5000);
sendSocket.send(pkt);

// 接收關鍵代碼
byte[] buf = new byte[100];
DatagramPacket pkt = new DatagramPacket(buf, buf.length);
receiveSocket.receive(pkt);
String msg = new String(pkt.getData(), 0, pkt.getLength());

範例展示雙向通訊基礎框架,可擴展為聊天室、即時遊戲等 UDP 應用。

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