我的笔记本电脑与以太网电缆和wifi连接 我的以太网IP:192.168.18.32 我的无线IP:192.168.18.167 现在我想通过发送一个UDP包java使用wifi网络接口。 我看了,如果我要绑定把对应的IP,然后在相应的接口将被用来发送,即UDP数据包,如果我绑定到IP 192.168.18.167然后UDP数据包将使用WiFi接口Java的UDP不能绑定到本地IP地址(以太网)
我的代码发送:
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)
您是否尝试过 的答案https://stackoverflow.com/questions/8965155/cannot-assign-requested-address-jvm-bind? – Jotunacorn
这两个发送哪个引发异常?你想在哪里发送数据报?并且发送套接字的接口是否可以真正发送到该目的地? – EJP
是的。我已经看到了这个,这并没有解决我的问题 –