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 :

Problème de recvfrom


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Problème de recvfrom
    Bonjour à tous,

    Voici mon problème, j'appelle la fonction recvfrom, qui est censé renvoyer -1 quand il n'y a pas de reception.

    Voici ce que je recoi :
    connexion effectuee
    le bind retourne:0
    valr=0
    l'envoi s'est bien deroule
    la fonction sendto retourne:30
    en attente
    on est avant le recvfrom
    on est apres le recvfrom
    nbrecu=-1
    pas de reception
    les donnees du Buffer de reception sont:
    8:20050529,20050606,20050603,20050615,20050531,20050530,20060403,20060404
    FIN
    Les données recu sont bien celle qu'à envoyé le serveur.

    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
    printf("on est avant le recvfrom\n");
    //réception des données
    nbRecu = recvfrom(SockClt,BufRecept, nbcar, 0, (struct sockaddr *)&AdrServR, &lgAdr) ;
     
    printf("on est apres le recvfrom\n");
    printf("nbrecu=%d\n",nbRecu);
     
    if(nbRecu==-1)
    {
      printf("pas de reception\n");
      printf("les donnees du Buffer de reception sont:%s\n",BufRecept);
      retour=-1;
    }else
    {
      printf("la reception a ete effectue\n");
      printf("les donnees du Buffer de reception sont:%s\n",BufRecept);
      printf("la fonction recvfrom retourne:%d\n",nbRecu);		
    }
    Quequ'un pourrais m'expliquer ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voici mon problème, j'appelle la fonction recvfrom, qui est censé renvoyer -1 quand il n'y a pas de reception.
    Faux, la fonction renvoie -1 s'il y a eu une erreur, mais si tu ne cherches pas avec à savoir quelle est l'erreur...

    Que t'affiche Dans cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbRecu = recvfrom(SockClt,BufRecept, nbcar, 0, (struct sockaddr *)&AdrServR, &lgAdr) ;
    Comment sont déclarés les variables et comment sont-elles initialisées?

    Jc

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Pour la déclaration des variables voici le début de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int Client::RecoitMessg(char* BufRecept,int nbcar)
    {
    	//déclaration des variables
    	int        retour=0;
    	int        nbRecu=0;
    	int        lgAdr=sizeof (AdrServR);
     
    //traitement
     
            memset(&AdrServR,0,sizeof(struct sockaddr));
    Et perror(""); afficher "NO ERROR".

    Je trouve cela très louche

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Essaye de vider le buffer qui est cense contenir tes données avant la reception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    memset(bufRecept, 0, TAILLE_BUFFER);
    nbRecu = recvfrom(SockClt,BufRecept, nbcar, 0, (struct sockaddr *)&AdrServR, &lgAdr) ;
    Avec TAILLE_BUFFER la taille du buffer bufRecept.

    Bon la tu fais du C++ mais on va pas le dire.

    C'est difficile de voir un probleme avec des bouts de code si reduits...
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

Discussions similaires

  1. Problème de recvfrom()
    Par redanovich dans le forum Réseau
    Réponses: 4
    Dernier message: 17/06/2008, 00h24
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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