DatagramSocket 用於 UDP 通訊。客戶端用無參數建構子繫結任意埠口;伺服器端用 DatagramSocket(int port) 繫結固定埠口。失敗拋出 SocketException。
send(DatagramPacket):發送資料包receive(DatagramPacket):接收資料包(阻塞)DatagramSocket socket = new DatagramSocket();
byte[] buffer = "Send me a datagram".getBytes();
InetAddress ia = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, ia, 10000);
socket.send(packet);
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket = new DatagramPacket(recvBuf, recvBuf.length, ia, 10000);
socket.receive(recvPacket);
System.out.println(new String(recvPacket.getData()));
socket.close();
DatagramSocket socket = new DatagramSocket(10000);
byte[] data = new byte[100];
DatagramPacket packet = new DatagramPacket(data, data.length);
while (true) {
socket.receive(packet);
System.out.println(new String(data));
socket.send(packet); // 回應
}
java DGSServerjava DGSClient(跨主機時加主機名/IP)| 特性 | DatagramSocket (UDP) | Socket (TCP) |
|---|---|---|
| 連線導向 | 無 | 有 |
| 可靠性 | 不保證 | 保證 |
| 順序 | 可能亂序 | 保證順序 |
| 適用場景 | 即時影音、DNS、廣播 | 檔案傳輸、Web、郵件 |