IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Doublon sur l'écoute d'un port UDP


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 45
    Points
    45
    Par défaut Doublon sur l'écoute d'un port UDP
    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

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par As2piK Voir le message
    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
    On ne peut pas. Fais autrement.
    Exemples possibles :
    - utiliser plusieurs ports pour qu'il n'y ait pas de conflit.
    - Ou alors utiliser du TCP, le port serveur pouvant écouter de multiples demandes de connexion.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 45
    Points
    45
    Par défaut
    Merci de ta réponse...

    Si je pouvais changer en TCP, ce serait pas drôle

    J'utilise des ports différents. Le site1 écoute sur le port 4444 et envoie sur le port 4445; le site2 écoute sur le port 4445 etc...

    Mais peut être tu parles d'autre chose ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par As2piK Voir le message
    J'utilise des ports différents. Le site1 écoute sur le port 4444 et envoie sur le port 4445; le site2 écoute sur le port 4445 etc...
    ... Dans ce cas, il faut créer la socket une seule fois pour chaque port. Cette socket sert à la fois à lire et à écrire, mais il ne faut la créer qu'une seule fois.

    Je n'avais pas imaginé que tu aurais pu faire autre chose que ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2011, 11h58
  2. Emettre sur 1 port UDP et réception avec 2 process
    Par dagosgil dans le forum Développement
    Réponses: 1
    Dernier message: 05/09/2007, 23h20
  3. Réception sur même port UDP par 2 appli
    Par Yannick_from_31 dans le forum Langage
    Réponses: 4
    Dernier message: 19/06/2007, 16h36
  4. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 11h21
  5. Réponses: 2
    Dernier message: 19/08/2003, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo