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 probleme pour transmissions de donnée


Sujet :

Réseau C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Points : 74
    Points
    74
    Par défaut sockets probleme pour transmissions de donnée
    Bonjour,

    Je cherche des tutos expliquant comment transmettre des informations avec les sockets? j'ai entendu parler des fonction recv() et send() mais je n'arrive pas a m'en servir.

    Je met mes codes sources sur http://saunivers.ifrance.com afin que vous puissiez voir les details

    -Le code source nommée "serveur_basic" est le code de mon serveur sans transmission de donnée.
    -Le code source nommée "client_basic" est le code de mon serveur sans transmission de donnée.
    ----------------->serveur_basic et client_basic fonctionnent tres bien<----

    -Le code source nommée "serveur_infos" est le code de mon serveur avec transmission de donnée(du moins en theorie car sa marche pas chez moi)
    -Le code source nommée "client_infos" est le code de mon serveur avec transmission de donnée.(du moins en theorie car sa marche pas chez moi)
    ----------------->serveur_infos et client_infos ne fonctionnent pas(la conexion se fait mais aucune donnée n'est transmise en aparence<----

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tu peux jetter un oeil au cours d'Emmanuel :

    http://emmanuel-delahaye.developpez.com/reseaux.htm
    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Salut,

    2-3 remarques dans le tas :

    - Tu peux utiliser la version 2,2 de Winsock (MAKEWORD (2,2))
    - Pense à vérifier les valeurs de retour de tes fonctions
    - Un conseil, déclare tes variables au début du programme (même si le C99 permet de faire autrement...)
    - Dans le send() de ton serveur, il faut utiliser strlen() et non sizeof(). N'oublie pas de rajouter 1 à strlen() pour prendre en compte le 0 final.
    - Ton message devrait également être terminé par un retour à la ligne "\r\n".
    - Il y a aussi une mauvaise utilisation de la fonction accept : elle retourne une socket sur laquelle tu dois envoyer les données...

    Bref, essaie de corriger ces quelques erreurs et pose des questions si tu ne comprends pas

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    merci de m'avoir répondu.

    Freed0, je ne comprend pas quand tu dis sa(je suis debutant ):

    "- Il y a aussi une mauvaise utilisation de la fonction accept : elle retourne une socket sur laquelle tu dois envoyer les données..."

    sa veut dire que je doit envoyer mes donnée sur le socket? ou que je doit faire un truc comme :

    sock=accept (sock, (SOCKADDR *) &sin, &taille);


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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Freed0 Voir le message
    - Dans le send() de ton serveur, il faut utiliser strlen() et non sizeof().
    OK.
    N'oublie pas de rajouter 1 à strlen() pour prendre en compte le 0 final.
    Euh, non. L'usage (et les protocoles textes) veulent qu'on ne transmette pas de 0 en ligne en mode texte.
    - Ton message devrait également être terminé par un retour à la ligne "\r\n".
    Disons par une marque de fin de ligne clairement définie (CR, LF, CRLF etc.)
    Pas de Wi-Fi à la maison : CPL

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par sebatlante Voir le message
    sock=accept (sock, (SOCKADDR *) &sin, &taille);
    Horrible !

    Dans un serveur, il faut bien différencier le socket serveur et le(s) socket(s) client(s).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       SOCKET sock_cli = accept (sock_srv, (SOCKADDR *) &sin, &taille);
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Points : 74
    Points
    74
    Par défaut
    ok merci à tous je vais modifier mon code et le rendre un peu plus clair

    je vous tiendrai au courant...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Decidement, je ne comprend rien au socket...
    Est ce que vous pouvez me donner un bon tuto s'il vous plait?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par sebatlante Voir le message
    Decidement, je ne comprend rien au socket...
    Est ce que vous pouvez me donner un bon tuto s'il vous plait?
    Si le mien ne te convient pas, il y'a celui-ci :

    http://vidalcharles.free.fr/lf/socket.html
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Freed0 Voir le message
    ...
    - Un conseil, déclare tes variables au début du programme (même si le C99 permet de faire autrement...)
    ...
    Ceci est évidamment une question de style. Personnellement, je préfère limiter la portée de mes variables au bloc où elles sont utilisées. Je regroupe donc la déclaration de mes variables en début de bloc. Je trouve cela plus clair.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #11
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par mujigka Voir le message
    Personnellement, je préfère limiter la portée de mes variables au bloc où elles sont utilisées. Je regroupe donc la déclaration de mes variables en début de bloc.
    Ce qu'il etait deja possible de faire avant C99. C99 ayant juste introduit la possibilite de declarer des variables au milieu du bloc (ce que personnelement je considere etre une mauvaise idee).

    Sinon je rejoins entierement l'avis de mujigka concernant la declaration en debut de bloc.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Points : 74
    Points
    74
    Par défaut
    ok merci Emmanuel Delahaye pour ces liens et merci à tous les autres pour leurs aides

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

Discussions similaires

  1. Canal sécurisé pour transmission de données à un serveur web
    Par TenderCoder dans le forum Services Web
    Réponses: 0
    Dernier message: 14/05/2015, 17h27
  2. Réponses: 1
    Dernier message: 28/09/2012, 23h53
  3. [MySQL] probleme pour récupérer les données php/sql
    Par xavioche77 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/01/2011, 16h44
  4. [MySQL] Probleme de transmission de données
    Par sef313 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/12/2009, 08h44
  5. Probleme pour Capturer une donnée
    Par sylvaindenisbe dans le forum IHM
    Réponses: 3
    Dernier message: 22/05/2007, 08h44

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