TCP 通訊成功時 IP 分別為 192.168.1.104/105。改測 UDP 後,兩電腦 IP 變成同一個 104,通訊失敗。
DHCP 租約衝突或靜態 IP 衝突。 可能其中一台電腦休眠喚醒後續用舊租約,另一台剛好獲取同 IP;或手動設了靜態 IP 重複。
// 接收端
DatagramSocket server = new DatagramSocket(9999); // 綁定端口
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
server.receive(packet);
String msg = new String(packet.getData(), 0, packet.getLength());
InetAddress clientIP = packet.getAddress();
int clientPort = packet.getPort(); // 獲取發送端口,回覆用
// 發送端
DatagramSocket client = new DatagramSocket(); // 隨機端口
InetAddress serverIP = InetAddress.getByName("192.168.1.104");
DatagramPacket sendPkt = new DatagramPacket(data, data.length, serverIP, 9999);
client.send(sendPkt);