首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 網絡編程:同一無線網下兩電腦 IP 衝突解決

     編輯:程式設計疑難解答

現象

TCP 通訊成功時 IP 分別為 192.168.1.104/105。改測 UDP 後,兩電腦 IP 變成同一個 104,通訊失敗。

原因

DHCP 租約衝突或靜態 IP 衝突。 可能其中一台電腦休眠喚醒後續用舊租約,另一台剛好獲取同 IP;或手動設了靜態 IP 重複。

解決步驟

  1. **重新獲取 IP**:兩台電腦依次執行 `ipconfig /release` → `ipconfig /renew`(Windows)或重啟網卡。
  2. **檢查靜態 IP 設置**:`ncpa.cpl` → 網卡屬性 → IPv4 → 確認未手動設定相同靜態 IP。
  3. **路由器綁定 MAC-IP**:登入路由器,將兩電腦 MAC 地址分別綁定固定 IP(如 104、105),杜絕衝突。
  4. **代碼中指定綁定端口而非依賴 IP**:`DatagramSocket socket = new DatagramSocket(port)` 自動綁定本機任意 IP,發送時指定目標 IP:Port。

UDP 通訊關鍵點

// 接收端
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);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved