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 avec send qui n'envoi rien


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 11
    Points : 15
    Points
    15
    Par défaut Probleme avec send qui n'envoi rien
    Bonsoir tout le monde =),
    J'ai été bloqué toute la journée par un ***** send qui n'a pas l'air très actif, et je demande donc renseignement à plus fort que moi.
    Pour être clair, après connection je fais un send(), qui me retourne bien le nombre de caractere envoyés, et WSAGetLastError() ne me retourne rien du tout. Par contre, avec un sniffer comme Ethereal, je n'ai rien du tout hormis, les SYN, ACK de connection, et les messages du serveur, mais mon programme client n'envoit rien du tout.
    Avec un de mes programmes, ca fonctionne à chaque fois, avec un autre jamais, et le 3eme, aléatoirement.
    Ca me rend fou, surtout que j'ai droit à des réactions completement illogiques de la part de ces programmes !

    Voici le code que j'exécute lors d'un évenement :

    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
    SOCKET sock;
        WSADATA WSAData;
        WSAStartup(MAKEWORD(2,0), &WSAData);
        SOCKADDR_IN sin;
     
        sin.sin_addr.s_addr	= inet_addr("209.123.181.179");
     
        sin.sin_family		= AF_INET;
        sin.sin_port		= htons(25);
        sock = socket(AF_INET,SOCK_STREAM,0);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
     
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        char* msg1 = "Un paquet que je voudrais voir apparaitre dans ethereal !!";
        int retour = send(sock, msg1, strlen(msg1), 0);
        char problem = WSAGetLastError();
     
             closesocket(sock);
         WSACleanup();
    J'ai pris le serveur smtp de wanadoo au hasard, juste pour pouvoir me connecter à un serveur. Et c'est ce meme code que j'utilise dans d'autres programmes qui fonctionne.
    La seule différence avec celui qui fonctionne toujours, c'est que je travail avec la librairie graphique : wxwidgets. Sur celui qui fonctionne quand il veut, j'exécute ce morceau de code dès l'exécution du programme.

    Donc voila j'aimerais savoir de quoi ca pourrait venir. Merci !

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 84
    Points
    84
    Par défaut
    Salut,
    je suis peut être a la ramasse, mais quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* msg1 = "Un paquet que je voudrais voir apparaitre dans ethereal !!";
    je suis pas sur que le dernier caractère soit toujours un '\x0'.
    Dans ce cas strln doit te renvoyer des trucs bizzard, non.

  3. #3
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par emardjean
    Salut,
    je suis peut être a la ramasse, mais quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* msg1 = "Un paquet que je voudrais voir apparaitre dans ethereal !!";
    je suis pas sur que le dernier caractère soit toujours un '\x0'.
    Dans ce cas strln doit te renvoyer des trucs bizzard, non.
    Si c'est toujours le cas ... M'enfin tu devrais utiliser string ce serait quand même mieux ... Et le prototype de ta fonction send ? Elle tombe du ciel cette fonction ?

    Marco85
    If you cannot explain a concept to a six year-old, then you do not fully understand it. [Albert Einstein]

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par emardjean
    Salut,
    je suis peut être a la ramasse, mais quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* msg1 = "Un paquet que je voudrais voir apparaitre dans ethereal !!";
    je suis pas sur que le dernier caractère soit toujours un '\x0'.
    Dans ce cas strln doit te renvoyer des trucs bizzard, non.
    si je ne me trompe pas, dans ce cas tu gardes seulement un pointeur vers le premiere element de ta phrase!!!

    n oubli pas que cette phrase est ds un espace de memoire non gardee!!!

    c est a dire que quand tu reutilise ton pointeur tu ne trouvera peut etre plus ta phrase!!!

    c est la raison d utiliser les strings dans ce cas!

  5. #5
    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
    Citation Envoyé par d-a-v-e
    Citation Envoyé par emardjean
    Salut,
    je suis peut être a la ramasse, mais quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* msg1 = "Un paquet que je voudrais voir apparaitre dans ethereal !!";
    je suis pas sur que le dernier caractère soit toujours un '\x0'.
    Dans ce cas strln doit te renvoyer des trucs bizzard, non.
    si je ne me trompe pas, dans ce cas tu gardes seulement un pointeur vers le premiere element de ta phrase!!!

    n oubli pas que cette phrase est ds un espace de memoire non gardee!!!

    c est a dire que quand tu reutilise ton pointeur tu ne trouvera peut etre plus ta phrase!!!

    c est la raison d utiliser les strings dans ce cas!
    C'est faux. En écrivant la définition de msg1 comme cela, le pointeur se retrouve en mémoire (généralement en lecture seule). Si on ne modifie pas la valeur du pointeur, msg1 pointra toujours vers la bonne chaîne de caractères...

    Par contre, ton problème vient surement d'une erreur d'exécution d'une des fonctions socket/bind/connect/send.

    Le retour des fonctions comme ces-derniers doit toujours être récupéreré et testé pour voir s'il n'y a pas eu de problème.

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par fearyourself
    C'est faux. En écrivant la définition de msg1 comme cela, le pointeur se retrouve en mémoire (généralement en lecture seule). Si on ne modifie pas la valeur du pointeur, msg1 pointra toujours vers la bonne chaîne de caractères...
    le pointeur est en memoire, c vrai!! il ne perdera pas son adresse!!! mais est ce que la memoire vers laquelle le pointeur pointe est gardee???

    quand je dis
    10 est dans un endroit dans la memoire mais a la ligne suivante cette place n est plus gardee!!

    ici aussi, la chaine de caractere est dans un endroit qui n est pas garde!

Discussions similaires

  1. champs file qui n'envoie rien
    Par lelapinou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/07/2008, 12h50
  2. probleme avec Jdialog:qui son pere
    Par info_plus dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 16/03/2008, 14h29
  3. Probleme avec BCB qui passe en mode debug cpu
    Par blondelle dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/04/2007, 19h54
  4. [PHP-JS] Probleme avec onchange qui ne redirige pas
    Par Greggggggg dans le forum Langage
    Réponses: 11
    Dernier message: 28/07/2006, 12h43
  5. Réponses: 17
    Dernier message: 24/03/2005, 12h24

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