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

Réseau C Discussion :

Sockets entre 3 utilisateurs


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Sockets entre 3 utilisateurs
    Bonjour,
    ma question concerne la mise en place de sockets entre 3 utilisateurs.
    J'arrive à établir des communications client/serveur grâce à l'utilisation d'un socket, mais je me demande quel est la meilleur solution lorsqu'on a 3 utilisateurs devant communiquer ensemble? Est ce que chacun doit être client et serveur?
    Comment faire, sur une même machine(pour la phase de developpement), pour qu'un client s'adresse bien à un des serveurs et pas à l'autre (je suis complètement débutant en la matière).
    Merci de votre aide!

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Pour un tel problème, la solution adoptée par la majorité des systèmes de chat est d'utiliser un serveur central auquel chaque client vient se connecter.

    On peut aussi penser à
    • Avoir 1 socket serveur et N socket client par utilisateur, mais ce genre de système ne doit avoir d'intérêt que dans des cas très limités (pas de serveur central par ex, encore que)
    • Utiliser un système multicast (pas sécurisé mais assez facile à mettre en place)


    Comment faire, sur une même machine(pour la phase de developpement), pour qu'un client s'adresse bien à un des serveurs et pas à l'autre (je suis complètement débutant en la matière).
    Utiliser des machines virtuelle ?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Oui en fait j'ai pensé aussi à un serveur central, les deux clients passant par ce serveur pour communiquer entre eux.
    Le serveur peut il traiter les deux sockets client à la fois? Ou doit il ouvir un premier socket, puis le fermer, puis en ouvrir un autre, etc...?

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par nocta Voir le message
    Oui en fait j'ai pensé aussi à un serveur central, les deux clients passant par ce serveur pour communiquer entre eux.
    Le serveur peut il traiter les deux sockets client à la fois? Ou doit il ouvir un premier socket, puis le fermer, puis en ouvrir un autre, etc...?
    Alors, le serveur va créer un socket d'écoute et attendre qu'un client se connecte (voir fonctions listen et accept)
    Quand un nouveau client se connecte, le serveur créée une socket pour ce nouveau client (la fonction accept crée ce nouveau socket).

    Donc on aura bien un socket par client, mais la fonction socket qui permet de les créer ne sera appelée qu'une fois.

    Je te conseille la lecture de http://broux.developpez.com/articles/c/sockets/. Dans cet article, un système de chat est créé.

  5. #5
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Il n'y a pas de solution meilleure que l'autre, c'est un choix de conception système distribué vs système centralisé, tout dépend donc de ce que tu veux faire réellement.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Citation Envoyé par nocta Voir le message
    Le serveur peut il traiter les deux sockets client à la fois?
    Oui, et heureusement ! C'est en grande partie à cela qu'ils servent. Mais c'est aussi de la même façon que ton programme peut aussi gérer deux fichiers ouverts en même temps.

    Ce qu'il te faut, c'est la fonction select() qui te permettra de te mettre en attente puis d'être réveillé dès qu'il se passera quelque chose sur un ou des sockets quelconques, en récupérant l'identifiant desdits sockets.

Discussions similaires

  1. prob de socket entre mysql et phpMyAdmin
    Par ratafia dans le forum Outils
    Réponses: 5
    Dernier message: 23/08/2006, 10h07
  2. Réponses: 5
    Dernier message: 25/04/2006, 14h13
  3. [VB]Gérer la liaison entre controle utilisateur et form
    Par Ooly2001 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 23/01/2006, 09h50
  4. partager un schema entre plusieurs utilisateurs
    Par jrman dans le forum Oracle
    Réponses: 5
    Dernier message: 15/12/2004, 16h53
  5. Réponses: 3
    Dernier message: 30/03/2004, 09h38

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