資料報 為無連線、不可靠的網路傳輸單元,適合不要求高可靠度的即時應用。Java java.net 套件提供 DatagramSocket 與 DatagramPacket 兩大核心類別實現 UDP 通訊。
DatagramSocket (繫結任意或指定埠)。DatagramPacket:封裝資料、目標 IP、目標埠。socket.send(packet) 發送。DatagramPacket (僅指定緩衝區大小)。socket.receive(packet) 阻塞等待回應。socket.close() 釋放資源。流程對稱,差異在於:
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 應用。