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 :

[sockets]envoyer recevoir des msg


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut [sockets]envoyer recevoir des msg
    Bonjour, j'ai un petit problemme avec les sockets, je n'arrive pas du tout a envoyer recevoir des msg correctement.

    j'utilise recv() et send() mais ss truc chelou du genrre:
    hello========================²²²

    et pareil, quand j'envoy plusieur msg, il les recois tous en meme temps dans le premier recv() (enfin c ce que je suposse)

    donc voila (je sais pas si j'ai etais assez clair) je voudrais savoir comment faire pour envoyer et recevoir des msg sans ce problemme.

  2. #2
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Pour moi c'est pas très clair.
    Donne un exemple de ce que tu envois, et de ce que tu recois, montre comment tu as codé ca... bref detaille un peu et on verra ce qu'on peut faire pour t'aider.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut
    ben voila la source, test et tu verra que oy plusieur msg, c'est le premier recv() qui recois tout et donc ne s'affiche pas.

    enfin bref, test la source tu verras mieux je pensse

    http://e.besson.free.fr/sockets.zip

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Si tu reçois "hello========================²²²" c'est que cela fonctionne bien !!!

    Sauf qu'il faut que tu places le caractère '\0'

    Donc récupère le int renvoyé par recv() et fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //speudo code
    char *data; 
    ...
    int t_i = recv(...,data,...);
    //data->"hello========================²²²" 
    data[t_i]='\0';
    //data->"hello"

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut
    bordel sa marche impect

    ha encore un problemme, si j'envoy plusieur message, il les recoit tous en meme temps., donc par exemple si je fais ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	//coté client
    	envoyer(online, "bonjour!");
    	envoyer(online, "test");
     
    	//coté serveur
    	recevoir(online);
    	recevoir(online);
    cela m'affiche: bonjour!test, c'est bien le premier recv() qui recois tous, comment eviter cela ?

  6. #6
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Ben pour savoir si c'est ton premier recevoir qui recoit tout, met le deuxieme en commentaire. Laisse les deux envoyer et teste.

    Tu verras bien ce qu'il t'affiche.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut
    ouais ben c'est bien le premier revc() qui recois les 2 msg.
    vous faites comment vous ?

  8. #8
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Essai de vider ton buffer de réception avant de l'utiliser avec memset et essai d'afficher ce que t'envoi/recoit et la taille du msg envoyé/recu de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    void envoyer(CClient online, char* Msg)
    {
      msg=Msg;
      control = send(online.SocketClient, msg+1, 5, 0);
      if (control != 5)
           cout<<"erreur: pb dans l'envoy du msg"<<endl;
     
      cout<<"J'ai envoyé "<<msg<<" de taille "<<control<<endl;
    }
     
    ///////////////////////////////////////////////////////////////////////////////////
    void recevoir(CServeur online)
    {
      memset(msg,'\0',55);
      control = recv(online.SocketClient, msg, 5, 0);
      if (control != 5)
           cout<<"erreur: pb dans la reception du msg"<<endl;
     
      cout<<"Message recu: "<<msg<<" de taille "<<control<<endl;
    }

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut
    nop je pensse pas que le problemme vient de là, et du coté client sa marche impec.

    tient voila mon code, tu verras: http://e.besson.online.fr/socket.zip

  10. #10
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    : ca marche dans ton prog client mais pas sur le serveur ?????
    Je vois pas trop ou est le probleme car le code est le meme et il me semble juste.

    Jette quand meme un oeil ici:
    http://msdn.microsoft.com/library/de...ock/recv_2.asp

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Par défaut
    personne ne vois pourquoi ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/03/2010, 19h06
  2. Envoyer/recevoir des trames ethernet
    Par orochimaru dans le forum Réseau
    Réponses: 13
    Dernier message: 03/07/2009, 20h19
  3. Creation d'une API JAVA pour envoyer/recevoir des sms
    Par issiaga isaac dans le forum Multimédia
    Réponses: 1
    Dernier message: 04/07/2008, 16h02
  4. Envoyer/recevoir des messages sur un réseau privé
    Par Tutotictac dans le forum Qt
    Réponses: 1
    Dernier message: 27/06/2008, 10h55
  5. Envoyer/Recevoir des fichierspar FTP
    Par gedeon555 dans le forum Réseau
    Réponses: 2
    Dernier message: 26/11/2005, 19h09

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