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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    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 confirmé

    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 : 45
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    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 averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    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 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
    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...

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