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 :

socket et réception de données avec la fonction recvfrom


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut socket et réception de données avec la fonction recvfrom
    bonjour tout le monde,

    maitenant je j'arrive a envoyer des donnée avec mes sockets, j'aimerais traiter le retour.

    pour cela j'ai créé la fonction 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
     
    //PACKET_SIZE 1024
    struct sockaddr_in sock_rcv;
     
    bool reception_Socket()
    	{
    		bool tempo = false;
    		int result;
     
    		//déclarration d'un buffer stockant l'ensmble des données (entête IP et ICMP)
    		char buffer[PACKET_SIZE];
    		int fromlen = sizeof(sock_rcv);
     
    		result = recvfrom(socketRaw, (char *)&buffer, PACKET_SIZE, 0, (struct sockaddr *)&sock_rcv, &fromlen);
    		if(result != SOCKET_ERROR)
    		{
    			tempo = true;
    		}
    		return tempo;
    	}
    apres un envoie de donné, je fais appel a cette fonction afin de récupérer le retour (ICMP) mais la tout s'arrete sur l'appel a la fonction recvfrom(). j'ai appercu cela en mode débogueur, mais pourtant j'ai bien un retour. Ce retour est observé avec ethereal.

    Je ne comprend pas pourquoi ma fonction attend inéfiniment alosr que le retour du paquet c'est bien réalisé!!!

    si vous avez une explication a me fournir ou une piste d'aide, je suis preneur.

    merci d'avance.
    Visual Studio .net 2003

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    je ne trouve toujours pas de solution a mon problème, et comme ca n'avance pas, je vais tester autrement.

    Faut il utiliser la meme socket pour l'envoie et la réception de donnée?
    Visual Studio .net 2003

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par poporiding
    Faut il utiliser la meme socket pour l'envoie et la réception de donnée?
    Salut!
    Disons que si celui qui t'envoi la reponse te l'envoi sur le même port, oui, tu dois attendre la reponse en utilisant le même socket.

    En effet, quand tu crée un socket, un numero de port lui est associé...

    Citation Envoyé par poporiding
    e ne comprend pas pourquoi ma fonction attend inéfiniment alosr que le retour du paquet c'est bien réalisé!!!
    Si tu as vérifié le retour du paquet, c'est que ce retour ne se fait pas sur le bon port. Enfin pas sur celui ou tu est en attente...

    En esperant avoir repondu à tes interogation...

    Bonne continuation

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/05/2015, 18h26
  2. Réponses: 1
    Dernier message: 12/11/2014, 13h41
  3. [AJAX] Réception des données avec POST
    Par Akim13 dans le forum AJAX
    Réponses: 18
    Dernier message: 20/12/2012, 13h19
  4. Réponses: 7
    Dernier message: 22/05/2006, 14h44
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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