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 :

questions à propos des sockets en C (win et lin)


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Par défaut questions à propos des sockets en C (win et lin)
    bonjour;
    je débute sur un des tutos présent sur le site , sur la programmation des sockets (bon j'ai compris assez de choses et bien entendu j'en ai aussi pas compris d'autres )
    serveur/client oui , mais est ce nécessaire d'avoir un serveur pour par exemple coder un programme genre messenger?
    et pour les connexions, doit on créer un socket pour chaque client ?
    on parle aussi de threads etc, bien , je voudrais vraiment avoir :

    - un cours en ligne ou si quelqu'un peut m'envoyer par mail , un cours détaillé sur la programmation des sockets , linux et windows
    - et ou puis je trouver les références pour les fonctions à utiliser sous les deux OS pour avoir un support sous la main?

    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Cet article d'Emmanuel Delahaye doit contenir les réponses à plusieurs de tes questions:
    http://emmanuel-delahaye.developpez....tes-reseaux-c/
    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.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Par défaut
    merci pour la réponse , j'ai deja tout les tutos developpez.com et d'autre y compris celui que tu viens de me montrer ,, en anglais je trouverais peut etre?
    et pour les references , bon linux c'est accéssible mais les man pages sont elles pareilles pour toutes les distributions (c'est à dire est ce qu'on peut s'en fier pour avoir une reference?)
    et comme toujours windows sort de la troupe et je trouve pas de documentation pour la programmation des sockets , les fonctions et les macros win32; et deja qu'en essayant un petit bout de code jute incluant la fameuse <winsock2.h> mon code::blocks la reconnait pas

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    Pour les différents linux, je pense que le mieux est directement la norme POSIX.
    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.

  5. #5
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    est ce nécessaire d'avoir un serveur pour par exemple coder un programme genre messenger?
    En théorie, non mais en pratique, ça peut poser des soucis.

    cf. la deuxième partie de ce post sur les contraintes routeur/NAT.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    En théorie, non mais en pratique, ça peut poser des soucis.

    cf. la deuxième partie de ce post sur les contraintes routeur/NAT.
    Non, dans un modèle client/serveur, le serveur est obligatoire, comment veux tu te connecter si personne n'est à l'écoute?

  7. #7
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Non, dans un modèle client/serveur, le serveur est obligatoire, comment veux tu te connecter si personne n'est à l'écoute?
    Ok, j'aurais dû préciser ma pensée. Tout dépend du concept qu'on associe au mot 'serveur':

    - 'serveur' dans le sens "une machine centrale à laquelle se connectent tous les clients". Dans ce cas ce n'est pas obligatoire (cf. topologie réseau P2P), mais ça pose d'autres contraintes énumérées ci-dessus qui dans les faits conseilles l'utilisation d'une topologie 'classique' pour ce genre de service (cf. topologie réseau 'en étoile', un serveur central auquel tous les clients se connectent).

    - 'serveur' au sens logiciel (une socket qui l'écoute de connexions sur un port donné). Dans ce cas effectivement il en faudra au minimum:
    * une pour le serveur central si topologie 'en étoile'
    * une par client qui joue le rôle de 'serveur' si topologie 'P2P'.

  8. #8
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Par défaut
    j'ai lu le topic , j'ai pas vraiment compris grand chose, mais voilà en résumé , compte tenu de bande passante et tout les trucs techniques, une application serveur c'est ce qu'on code en mode serveur?
    je capte la connexion , sur un port depuis le client x , je la "copi" sur un socket destiné à l'autre client(destinataire) sur un AUTRE port c'est bien ca?

    le AUTRE c'est pour bien assimiler si l'on utilise plusieurs port( un port pour chaque socket)
    merci de m'éclaircir sur ces points , je viens de trouver un document sur beej's en anglais ca doit etre suffisant pour les os type unix ; je cherche tjrs coté windows.

    ah et pour l'inclusion de la bibliothèque winsock2.h dois je dois ajouter une option pour l'éditeur de lien , mais quand je l'ajoute , mingw me dit gentillement que ca n'existe pas:::!!!!

  9. #9
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Pour l'architecture générale des clients & serveur dans une topologie en étoile: des infos sont dispos sur le forum en faisant la bonne recherche. Mots clefs conseillés: "serveur client socket thread": exemple.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par défaut
    #pragma comment n'existe pas sous gcc, mais tu peux lier à libws2_32.a sous MinGW en ajoutant au linker l'option -lws2_32 (il s'agit d'un L minuscule, pas d'un i majuscule).

    La "copie" de connexion d'un socket à l'autre est réalisée directement par la fonction d'attente bloquante de connexion*, accept(), qui retourne un nouveau socket quand elle réussit.

    *on peut utiliser la fonction d'attente bloquante select() pour attendre sur plusieurs sockets à la fois plutôt que de bloquer sur accept(). Par contre, sous Windows, elle ne marche que sur les sockets, pas sur les descripteurs comme sous nux.
    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.

  11. #11
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Par défaut merci
    merci , je viens d'ajouter codeblocks/project/build options/linker setting
    j'ai tapé lws2_32.lib et .a et tout mais enfin de compte , celle qui a marché vraiment : ws2_32 avec les librairies que j'ai deja..
    merci pour vos réponses , je suis sur la msdn en ce moment , je dois copier coller les references , mais si vous avez encore des liens ou des cours je suis preneur

    enfait quand on dit portabilité , on parle de windows , linux , et macos et compagnie , ces derniers doivent avoir leurs propres méthode j'imagine

    merci

Discussions similaires

  1. question à propos des containeurs
    Par bountykiller dans le forum C++
    Réponses: 4
    Dernier message: 02/10/2005, 13h21
  2. Question à propos des états
    Par rangernoir dans le forum IHM
    Réponses: 4
    Dernier message: 30/09/2005, 14h38
  3. Question à propos des compilateurs
    Par elf dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 20/07/2005, 17h00
  4. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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