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 :

Probleme send() socket - Erreur incompréhensible


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut Probleme send() socket - Erreur incompréhensible
    Bonjour tout le monde

    Je me permet de vous quémender de l'aide car je n'arrive pas à trouver mon erreur, plusieurs personnes ont déja regardé et n'ont pas trouvé.

    Je fais une fonction send qui doit m'envoyer un tableau de char. Mais le probleme c'est que le send a un probleme. Je ne vois pas du tout ou.

    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
     
    void Connection::envoi_variable(int GrainsDeBle, int Fromage, int Position)
    {
    int erreur;
     
    	buffer_envoi[0]=(char)GrainsDeBle;
    	buffer_envoi[1]=(char)Fromage;
    	buffer_envoi[2]=(char)Position;
     
     
    std::cout << GrainsDeBle <<" "<< Fromage << " " << Position<< std::endl; 
    std::cout << buffer_envoi[0] <<" "<< buffer_envoi[1] << " " << buffer_envoi[2] << std::endl; 
    		erreur=send(Expediteur_sock,this->buffer_envoi,strlen(this->buffer_envoi),0);
    std::cout << "erreur send =>" << erreur << std::endl;
     
    ok = true;
    }
    J'ai une erreur dans le send(), on me renvoit -1.

    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
     
    int Connection::recup_variable(int GrainsDeBle, int Fromage, int Position)
    {
    	char buffer_reception[3];
    	int erreur;
     
    erreur=recv(Destinataire_sock,buffer_reception,strlen(buffer_reception),0);
     
     
    this->GrainsDeBle=(int)buffer_reception[0];
    std::cout << "GrainBleBufferTab: "<< (int) buffer_envoi[0]<<std::endl;
     
    std::cout << "GrainBleBuffer: "<< GrainsDeBle;
    this->Fromage=(int)buffer_reception[1];
    std::cout << "FromageBufferTab: "<< (int)buffer_reception[1] << std::endl;
     
    this->Position=(int)buffer_reception[2];
    std::cout << "PositionTab: "<< (int)buffer_reception[2] << std::endl;
    return erreur;
    }
    On me renvoit des nombres incroyables:
    Vous etes connecte au serveur
    GrainBleBufferTab: -52
    FromageBufferTab: -52
    PositionTab: -52
    Merci d'avance!

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    buffer_envoi[0]=(char)GrainsDeBle;
    buffer_envoi[1]=(char)Fromage;
    buffer_envoi[2]=(char)Position;
    erreur = send(Expediteur_sock, this->buffer_envoi, strlen(this->buffer_envoi),0);
    Je n'ai pas la déclaration de ton buffer_envoi, mais il manque probablement le 0 terminal pour que strlen() retourne quelquechose de cohérent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char buffer_envoi[4];
    buffer_envoi[0]=(char)GrainsDeBle;
    buffer_envoi[1]=(char)Fromage;
    buffer_envoi[2]=(char)Position;
    buffer_envoi[3]=0;
    erreur = send(Expediteur_sock, buffer_envoi, strlen(buffer_envoi),0);
    De plus, tu mets dans un char (buffer_envoi[0]) un int (GrainsDeBle). Tu es sûr que tes paramètres int (GrainsDeBle) ne dépasseront jamais 255 ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/05/2012, 16h18
  2. Sockets c erreur incompréhensible
    Par bobo825 dans le forum Linux
    Réponses: 3
    Dernier message: 02/01/2007, 12h07
  3. [Socket] erreur de connexion
    Par coachbob44 dans le forum C++
    Réponses: 4
    Dernier message: 03/03/2005, 17h14
  4. [Fichiers] Erreur incompréhensible
    Par Clorish dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h18
  5. [JSP] Erreur incompréhensible
    Par xxaragornxx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2003, 16h37

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