Bonsoir à tous,
Dans le cadre d'un exercice en cours, nous devons implémenter un petit programme de communication en UDP entre trois sites, avec des communications en anneau (site1 envoi au site 2, site 2 au site 3, site 3 au site 1).
J'ai cependant un problème, très certainement très simple à corriger, mais je n'ai peut être pas compris quelque chose à propos des sockets x_X.
Donc, voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public SiteFinal(int siteId, int portEcoute, int nbSites, InetAddress adresseSiteSuivant, int portSiteSuivant) throws IOException {
this.siteId = siteId;
this.nbSites = nbSites;
nombrePremiers = new LinkedList<Integer>();
//socket de reception pour l'ecoute
System.out.println("Port : " + portEcoute);
socketReception = new DatagramSocket(portEcoute, InetAddress.getByName("localhost"));
//socket pour l'envoi vers le site suivant
socketEnvoi = new DatagramSocket(portSiteSuivant, adresseSiteSuivant);
ecoute();
} |
Mon problème, c'est que ce site crée un socket pour la réception des messages sur le port "portEcoute" et un second pour l'envoi des messages sur le port "portSiteSuivant". MAIS, au moment de lancer le deuxième site, je reçois une erreur
java.net.BindException: Address already in use
Chose logique, puisque j'ai déjà créé les deux sockets dans le premier site.
Du coup ma question est la suivante : comment créer un socket destiné uniquement à l'envoi, sans écoute ? Ou, le cas échéant, envoyer des messages sans socket
Merci beaucoup
Partager