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

C++ Discussion :

TCP/UDP


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut TCP/UDP
    Bonjour,

    j'ai besoin de faire un serveur en relation avec plusieurs clients (une 20aine). (en c++ avec les sockets win)
    J'ai pensé que le protocole tcp était plus adapté que l'udp. C'est pour faire transiter des données un peu comme un chat....
    Par contre, est ce que je me trompe en pensant que le serveur ne peut être en relation qu'avec un seul client sur un même port ? Par conséquent il faudrait autant de ports que de clients ?

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Tu te trompe, il peut y avoir 300client sur un même port, il faut juste que ton client boucle sur l'acoute du port.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut
    ah bon, j'étais persuadé du contraire....
    Donc il n'y a pas d'interets à boucler sur un port N et attribuer un port i different pour chaque client, autant tout faire sur le même port non ? (en tcp tjrs)

  4. #4
    Membre éclairé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Par défaut
    Oui, je dirais même que la fasson a la quel tu penssais serais impossible :
    Si tu écoute sur un port N, le client peut se connecter en X,Y,Z, il tomberas jamais sur ton serveur....
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  5. #5
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut
    Oki merci bcp ,
    juste une derniere question de stratégie (côté serveur avec réseau ethernet):

    -est ce que faire un tableau des sockets, puis verifier dans une boucle les status pour recevoir ou envoyer un message est une mauvaise solution ? (la boucle est dans un thread).
    -Peut etre est il preferable d'attribuer un thread à chaque socket ou d'utiliser des sockets asynchrones ?

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    tu as le choix, en fait.
    la fonction standard select() permet de vérifier simultanément l'état de plusieurs sockets, ensuite tu peux traiter l'un après l'autre ceux qui ont des données à traiter...

    avec select(), tu peux tout faire dans le même thread, tout comme avec les fonctions spécifiques à Windows (notamment les sockets asynchrones). Sans select(), généralement tu te retrouve obligé d'utiliser un thread par client.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut
    Oué c'est ce que je pensais,
    merci beaucoup pour vos réponses

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/03/2007, 14h29
  2. moniteur ip(tcp/udp)/cpu/ram graphique
    Par clowncoder dans le forum Mon programme
    Réponses: 1
    Dernier message: 21/01/2007, 15h38
  3. Réponses: 1
    Dernier message: 07/05/2005, 17h06
  4. Programme permettant de créer ses propres paquets TCP/UDP
    Par mat087 dans le forum Développement
    Réponses: 6
    Dernier message: 21/05/2004, 21h42
  5. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25

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