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 :

Clients/Serveur sur localhost avec sockets TCP


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chypre

    Informations forums :
    Inscription : Août 2012
    Messages : 43
    Points : 29
    Points
    29
    Par défaut Clients/Serveur sur localhost avec sockets TCP
    salut

    comment faire une diffusion d'un message depuis un serveur vers plusieurs clients en utilisant les sockets en mode connecté sachant que les clients et le serveur se trouvent dans le localhost ???

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    De la même manière qu'en le diffusant à un seul client, mais cette fois tu le fais avec une boucle sur tous les clients.

    Le multicast/broadcast en mode connecté, n'a pas vu de standard de fait s'imposer. De ce fait il n'y a pas d'implémentation fournie avec les OS courants, et Java n'en considère pas.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chypre

    Informations forums :
    Inscription : Août 2012
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    comment garder la trace de ces clients et comment les identifier de manière unique sachant qu'ils s'exécutent sur la même machine et ils ont forcément la même adresse IP ???

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Chaque objet Socket obtenu avec accept() est différent et peut être placé dans une Collection<Socket>, comme une List<Socket> ou un Set<Socket>.
    Comment ça marche derrière c'est une histoire de numéros de ports, mais t'en as pas besoin.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chypre

    Informations forums :
    Inscription : Août 2012
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    merci pour le message

    j'ai essayé de faire le travail de cette manière ça marche pour le premier message seulement puis une exception se déclenche

    voici les fichiers si vous voulez bien jeter un coup d’œil
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Le multicast/broadcast en mode connecté, n'a pas vu de standard de fait s'imposer
    Il y a eu, entre autre tentative, la RFC3208, mais ça posait plus de problèmes que ça n'en résolvait...

    Steph

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (i = 0; i < socketsClients.size(); i ++) {
    							diffusion = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socketsClients.elementAt(i).getOutputStream())));
    							diffusion.println("DIFFUSION_MESSAGE");
    							diffusion.println(message);
    							diffusion.flush();
    							diffusion.close();
    						}
    Tu fermes le flux après le premier message, donc forcément, ça n'ira pas plus loin. Tu ne devrais pas créer de nouveaux writer sur la socket, puisque tu as déjà créé des writer dans GestionnaireClient. En fait, tu devrais ajouter dans GestionnaireClient une méthode qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void diffusion(String message){
         sortie.println("DIFFUSION_MESSAGE");
         sortie.println(message);
         sortie.flush();
    }
    stocker des GestionnaireClient et non pas des Socket dans ta collection, et modifier ta diffusion pour appeler cette méthode plutôt que d'attaquer directement les outputstream des socket. Si tu t'emmerde à créer une class GestionnaireClient autour de la socket, utilise là


    PS: et pense aussi à la gestion multithread correcte. Tu parcoure joyeusement et met à jour des listes dans plusieurs threads, tu manipule des outptustream depuis plusieurs thread. Il ne va pas falloir longtemps avant que tu te chope des corruption ou des erreurs liées à la concurrence.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chypre

    Informations forums :
    Inscription : Août 2012
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    merci pour les réponses
    maintenant ça marche bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/03/2015, 09h24
  2. Architecture Client/Serveur en java avec les sockets
    Par ram-0000 dans le forum Réseaux
    Réponses: 0
    Dernier message: 03/04/2013, 10h44
  3. Réponses: 2
    Dernier message: 14/05/2007, 22h35
  4. Serveur SMTP sur Localhost avec Apache2
    Par yamadix dans le forum Apache
    Réponses: 3
    Dernier message: 16/04/2007, 13h10
  5. Client/Serveur en C avec OpenSSL
    Par baallrog dans le forum C
    Réponses: 2
    Dernier message: 14/01/2007, 05h26

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