UDP(User Datagram Protocol)無連線、低延遲,適合即時通訊、廣播、遊戲同步等場景。本範例展示單一 JVM 內啟動「發送執行緒」與「接收執行緒」,分別綁定不同 Port(3000 發送、9000 接收),透過指定目標 IP 實現雙向資料交換。
[主執行緒 main] ├─→ new ReciveThread().start() // 監聽 Port 9000,無限循環接收 └─→ new SendInfo().main(args) // 讀取鍵盤輸入,發送至目標 IP:Port
// 手動組裝目標 IP(10.1.1.200)與 Port 9000
byte[] ip = {(byte)10, 1, 1, (byte)200};
InetAddress target = InetAddress.getByAddress(ip);
DatagramSocket ds = new DatagramSocket(3000); // 本地綁定發送 Port
DatagramPacket dp = new DatagramPacket(data, data.length, target, 9000);
ds.send(dp);
ds.close(); // 每次發送後關閉(範例簡化,實際建議複用 Socket)
// 在獨立執行緒中無限循環
DatagramSocket ds = new DatagramSocket(9000); // 綁定接收 Port
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp); // 阻塞等待資料
String msg = new String(dp.getData(), 0, dp.getLength())
+ " from " + dp.getAddress().getHostAddress()
+ ":port " + dp.getPort();
System.out.println(msg);
ds.close();
MulticastSocket 實現區域網廣播發現。NioDatagramChannel 獲得高效能非阻塞 UDP 支援。