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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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