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 :

Socket


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut Socket
    Bonjour à tous,

    Alors voila je me suis remis au C apres mon apprentissage du perl
    Mais gros problème, la ou les sockets etaient simple a comprendre en Perl deviennent complètement incompréhensible pour moi en C.
    J'ai regarder le Tuto de TheWalrus mais il n'explique pas tout. Alors petite request pour savoir ou avez vous appris la création de socket en C, car je n'arrive pas a trouver de bon cours la decu (ni de books)
    PS : Pour le moment je vise les sockets sous win.
    Si une personne a ca en stock ou a la patience de faire un mini cours ca pourrai servir à pas mal de monde lool

    Merci Encore et bonne continuation au Codeurs !

    Have Fun 8)

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    , il y en a (et c'est là que j'ai commencé à apprendre). Après...je ne sais pas ce que tu appelles un "bon cours". Cela me semble être plutôt subjectif. J'ai déjà conseillé un bon (à mon sens) bouquin sur le sujet dans un autre post il y a peu de temps, tu devrais pouvoir le trouver facilement.
    Maintenant, si tu as des problèmes précis, tu peux aussi les exposer précisément.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Socket
    Citation Envoyé par Nickname
    Alors voila je me suis remis au C apres mon apprentissage du perl
    Mais gros problème, la ou les sockets etaient simple a comprendre en Perl deviennent complètement incompréhensible pour moi en C.
    Quelques informations ici:

    http://emmanuel-delahaye.developpez.com/reseau.htm

    Sinon, ce site est bien

    http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Reseaux1/cours/

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    Merci bien pour vos réponses. Je vais essayer de comprendre tout ca puis comme le dis David.Schris si je bloque sur quelque chose de précis, je vous le fait savoir

    Yeahhh sockets me voila lool

    Edit:

    Rah des le commencement ca ne va pas loool

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSAStartup(MAKEWORD(2,0), &WSAData);
    Je comprend pas pourquoi l'on doit mettre un &WSAData

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    Pareil ici, enfait je dois avoir un manque de connaissance quelque part car des que l'on mets des fonction et des & dedans je pige plus, meme le sizeof(sin) comprend rien arf mdr

    J'avais acheter le book de Claude Delannoy ( Le livre du C ) mais bon meme avec ce bagage c'est pas simple
    Vous me conseillez de relire de la doc C avant de m'attaquer au socket ?
    Rahhh i'm boulet man

    Merci a tous

  5. #5
    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
    pour les &, oui.
    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.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    loool non mais je sais que les & servent a fournir l'adresse de la variable mais moi j'ai appris a les utiliser comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     int *test;
    int nb = 7;
    test = &nb; // pour que test pointe sur nb
    Mais la ca voudrai dire que c'est (SOCKADDR *) qui pointe sur sin ?
    (pour le bind)

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Nickname
    loool non mais je sais que les & servent a fournir l'adresse de la variable mais moi j'ai appris a les utiliser comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     int *test;
    int nb = 7;
    test = &nb; // pour que test pointe sur nb
    Mais la ca voudrai dire que c'est (SOCKADDR *) qui pointe sur sin ?
    (pour le bind)
    Non c'est un transtypage, tu transtype ton sockaddr_in *sin, en sockaddr *
    Car bind prend un argument un pointeur sur un sockaddr or toi tu as un sockaddr_in

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    oh oki donc c'est parcque j'ai ceci :

    on a nommer la structure sin et donc pour le bind on pointe vers la structure
    ?
    PS: on peut nommer comme l'on veut le sin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SOCKADDR_IN sin;
    SOCKET sock;
    sin.sin_addr.s_addr = inet_addr ("127.0.0.1");
    sin.sin_family = AF_INET;
    sin.sin_port = htons(5000);
    sock = socket(AF_INET,SOCK_STREAM,0);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    on pourrai transformer ca en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SOCKADDR_IN test;
    SOCKET sock;
    test.sin_addr.s_addr = inet_addr ("127.0.0.1");
    test.sin_family = AF_INET;
    test.sin_port = htons(5000);
    sock = socket(AF_INET,SOCK_STREAM,0);
    bind(sock, (SOCKADDR *)&test, sizeof(test));
    ?

  9. #9
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Nickname
    PS: on peut nommer comme l'on veut le sin ?
    Oui oui, c'est une variable quelconque tu lui donne le nom que tu veux (enfin dans les noms autorisés bien sûr)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    oki i see
    Par contre pour le transtypage je comprend pas pourquoi on doit faire cela.
    on aurai pas pu laisser en sockaddr_in *sin au lieu de mettre sockaddr * ?

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Nickname
    Je comprend pas pourquoi l'on doit mettre un &WSAData
    [...]
    Pareil ici, enfait je dois avoir un manque de connaissance quelque part car des que l'on mets des fonction et des & dedans je pige plus, meme le sizeof(sin) comprend rien arf mdr
    [...]
    J'avais acheter le book de Claude Delannoy ( Le livre du C ) mais bon meme avec ce bagage c'est pas simple
    Vous me conseillez de relire de la doc C avant de m'attaquer au socket ?
    [...]
    Franchement, oui : pour écrire un programme en C utilisant les sockets, il vaut mieux commencer par savoir écrire un programme en C. C'est un peu comme vouloir piloter un jet sans passer le moidre brevet de pilote...imaginez le résultat...
    Ensuite, le fait d'acheter un livre ne constitue pas un bagage : il faut aussi le lire.
    Sinon, des cours en ligne existent et répondent probablement à vos questions. Par exemple : "L'opérateur & appliqué à une variable délivre l'adresse de celle-ci".
    Un des nombreux cours disponibles : http://www-clips.imag.fr/commun/bernard.cassagne/Introduction_ANSI_C.html

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    il faut pas etre agressif comme cela je demande juste de l'aide !
    Pour ce qui est de programmer, il faut parler en connaissance de cause, j'ai fait des programmes de bases structures, petites fonctions, manipulation de tableau etc...pi on le fait aussi en cours. Seulement la ce n'est pas la meme chose.
    Donne ce genre de code a quelqu'un qui vient juste de finir le cours sur les pointeurs, je pense qu'il va etre vite perdu aussi. Si tu ne veux pas aider ne poste pas. On est la pour apprendre et se divertir, et non pas que quelqu'un vienne nous faire la morale ...
    bref vais revoir un peu les cours de C qui sont sur developpez avant de me mettre au socket et ca passera peut-etre mieux.

    Merci pour votre aide en tout cas

  13. #13
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par man
    int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
    bind veut un pointeur sur un sockaddr alors on transtype.

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Nickname
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WSAStartup(MAKEWORD(2,0), &WSAData);
    Je comprend pas pourquoi l'on doit mettre un &WSAData
    Parce que le paramètre est un pointeur sur structure. Il attend donc l'adresse d'une structure de type WSADATA. C'est justement le cas de WSAData. On lui passe donc son adresse avec &.

    Cette partie du code est propre à Windows.

  15. #15
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par Nickname
    il faut pas etre agressif comme cela je demande juste de l'aide !
    Il n'y avait rien d'agressif dans mon message. Tu as posé la question suivante :
    Citation Envoyé par Nickname
    Vous me conseillez de relire de la doc C avant de m'attaquer au socket ?
    Et j'y ai répondu "Franchement, oui ..." en essayant d'expliquer pourquoi.
    Citation Envoyé par Nickname
    Pour ce qui est de programmer, il faut parler en connaissance de cause
    Dois-je comprendre que je ne parle pas en connaissance de cause ? J'ai du mal comprendre...
    Citation Envoyé par Nickname
    Si tu ne veux pas aider ne poste pas.
    C'est pourtant pour aider que j'ai, dans mon message cité une définition de l'opérateur "&" au sujet duquel tu te posais des questions.
    C'est pourtant bien pour aider que je t'ai donné un lien vers un cours de C en ligne qui me semblait accessible à un débutant.
    Si tu ne veux pas qu'on réponde à tes questions, ne les pose pas. En quoi est-ce mal ou "agressif" de conseiller à quelqu'un de commencer par les bases ?

    Citation Envoyé par Nickname
    On est la pour apprendre et se divertir, et non pas que quelqu'un vienne nous faire la morale ...
    Au risque de me répéter, il n'y avait point de morale dans mon message. J'ai seulement essayé de répondre à tes questions (cf. ci-dessus).

    Citation Envoyé par Nickname
    bref vais revoir un peu les cours de C qui sont sur developpez avant de me mettre au socket et ca passera peut-etre mieux.
    Cela passera certainement mieux. Je suis quasiment certain que même les plus chevronnés se replongent dans leurs cours ou leurs vieux livres de temps en temps.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 161
    Par défaut
    Non mais c'est vrai que vous voulez m'aider et c'est tres sympa, désolé David.Schris d'avoir confondu ta franchise avec de l'agressivité.

    Parce que le paramètre est un pointeur sur structure. Il attend donc l'adresse d'une structure de type WSADATA. C'est justement le cas de WSAData. On lui passe donc son adresse avec &.

    Cette partie du code est propre à Windows.
    oki, enfait il faut que j'apprenne les éléments (paramètres) que les différentes fonctions attendent. J'espere que ca rentrera dans ma tete petit a petit.

    Merci beacoup en tout cas c'est sympa d'avoir de l'aide et que vous soyez a l'écoute des autres

Discussions similaires

  1. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  2. raw socket et langage c
    Par SlayDave dans le forum Développement
    Réponses: 2
    Dernier message: 29/08/2002, 19h09
  3. socket
    Par ben91 dans le forum Développement
    Réponses: 5
    Dernier message: 13/08/2002, 11h04
  4. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40

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