2017-10-16 29 views
-1

Mon ordinateur portable est connecté avec un câble ethernet et wifi mon ip ethernet: 192.168.18.32 mon wifi ip: 192.168.18.167 Je voudrais envoyer un paquet udp par Java en utilisant l'interface réseau wifi. Je lis que si je lie à l'ip correspoding alors l'interface correspondante sera utilisée pour envoyer des paquets UDP à savoir si je lie à ip 192.168.18.167 alors les paquets UDP envoyés en utilisant l'interface wifiJava UDP ne peut pas se lier à l'adresse IP locale (Ethernet)

mon code est:

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); 

mais chaque fois que cette méthode d'envoi est appelé

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

Il montre l'erreur suivante:

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) 
+0

Avez-vous essayé la réponse dans https://stackoverflow.com/questions/8965155/cannot-assign-requested-address-jvm-bind? – Jotunacorn

+0

Lequel de ces deux envoie l'exception? Et où essayez-vous d'envoyer le datagramme? et est-ce que l'interface de la socket d'envoi peut vraiment envoyer à cette destination? – EJP

+0

Oui. J'ai vu ceci et cela ne résout pas mon problème –

Répondre

-1

Mon serveur fonctionnait sur localhost ie 127.0.0.1 quand j'ai déplacé mon serveur vers un hôte externe c'est-à-dire IP alors ce même code a fonctionné. Je pouvais envoyer des paquets en utilisant ehternet ou ma femme et je pouvais voir le journal dans wireshark.

+0

Votre serveur? Quel serveur? Votre serveur «fonctionnait sur localhost i.e. 127.0.0.1» comment? Vous n'avez rien dit à propos des serveurs dans votre question. Le seul code que vous avez affiché était * not * 'fonctionnant sur 127.0.0.1'. – EJP

+0

EJP désolé mon erreur. Je ne pensais pas que cela aurait de l'importance si le serveur fonctionnait sur localhost ou sur un serveur externe. –

+0

Je vous demande ce que cela signifie, et vous n'avez pas répondu. Votre réponse et votre question sont inutiles ici jusqu'à ce que vous clarifiez. – EJP