簡體   English   中英

Java UDP 無法綁定到本地 IP 地址(以太網)

[英]Java UDP cant bind to local IP address(Ethernet)

我的筆記本電腦用以太網電纜和 wifi 連接我的以太網 ip:192.168.18.32 我的 wifi ip:192.168.18.167 現在我想使用 wifi 網絡接口通過 java 發送一個 udp 數據包。 我讀到如果我綁定到相應的 ip 那么相應的接口將用於發送 udp 數據包即如果我綁定到 ip 192.168.18.167 那么 udp 數據包將使用 wifi 接口發送

我的代碼是:

  final String wiFiCardAddressName = "192.168.18.32";
  final String ethernetAddressName = "192.168.18.167";
  final InetAddress wiFiCardAddress = InetAddress.getByName(wiFiCardAddressName);
  final InetAddress ethernetAddress = InetAddress.getByName(ethernetAddressName);
  DatagramSocket datagramSocketWifi = new DatagramSocket(10000, wiFiCardAddress);
  System.out.println(ethernetAddress);
  DatagramSocket datagramSocketEt = new DatagramSocket(6666, ethernetAddress);

      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, serverPort);

但是每當調用此發送方法時

     datagramSocketWifi.send(sendPacket);
     datagramSocketet.send(sendPacket);

它顯示以下錯誤:

Exception in thread "main" java.net.BindException: Cannot assign requested address: Datagram send failed    
at java.net.DualStackPlainDatagramSocketImpl.socketSend(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.send(Unknown Source)
at java.net.DatagramSocket.send(Unknown Source)
at socket_test.Client_UDP_Bind.main(Client_UDP_Bind.java:50)

當我將服務器移動到外部主機(即 IP)時,我的服務器在 localhost 上運行,即 127.0.0.1,然后相同的代碼起作用。 我可以使用以太網或妻子發送數據包,並且可以在wireshark中看到日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM