私のラップトップは、イーサネットケーブルや無線LAN に接続されている私のイーサネットIP:192.168.18.32 私の無線LAN IP:192.168.18.167が 今私はを通じてUDPパケットを送信したいですJavaは無線LANネットワークインターフェイスを使用しています。 私は192.168.18.167をIPに結合する場合、私はcorrespoding IPにバインドした場合、対応するインタフェース、すなわちUDPパケットを送信するために使用されますその後、UDPパケットがJavaのUDPは、ローカルIPアドレスにバインドカント(イーサネット)
私のコードがある無線LANインタフェースを使用して送信されることをお読みください。
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);
が、このsendメソッドが
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
これらの2つの送信のうち、どれが例外をスローしますか?そして、どこでデータグラムを送信しようとしていますか?送信ソケットが実際にその宛先に送信するためにバインドされているインタフェースを使用できますか? – EJP
はい。私はこれを見て、これは私の問題を解決しません –