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 :

erreur lors de l'envoie de donné via les socket.


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 erreur lors de l'envoie de donné via les socket.
    bonjour tout le monde.

    Je me galère vraiment sur la création d'un programme qui envoie des socket en mode RAW.

    j'ai un ensemble d'erreur, capturé avec WSAGetLastError(), et je ne comprend pas leur signification car c'est un nombre ==> 10065 (Windows 2000 sp4). note : le meme code exécuté sur un autre ordi me donne l'erreur 10004 (windows XP sp2) !!

    Ces erreurs sont récupérées apres l'envoi d'un message via la socket (sendto());

    voila un bout de code qui vous montrera comment je cré et déclare mes sockets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //création de la socket
    SOCKET socketRaw;
    socketRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
     
    //initialisation de la socket
    int sockOpt = 1;
    setsockopt(socketRaw, IPPROTO_IP, IP_HDRINCL, (const char*)&sockOpt, sizeof(sockOpt));
     
    //envoi  de données
    sendto(socketRaw, (char *)pPaquet, dataSize, 0, (struct sockaddr *)&IP_sock_info, sizeof(IP_sock_info));
    pPaquet est une structure composée de deux autres structures formant l'entete IP et l'entete ICMP.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    struct IP_HEADER 
        { 
            unsigned char        ip_hl:4; // 4 bits("Internet header lengh") représentant la taille de l'entête IP
            unsigned char        ip_v:4; // ip_v la version (pour le moment version 4 de IP)
            unsigned char        ip_tos; // "Type Of Service" est codé sur 8 bits.
            unsigned short        ip_len; // Le champ Longueur totale est codé sur 16 bits et représente la longueur du paquet incluant l'entête IP et les Data associées
            unsigned short        ip_id; // Le champ Identification est codé sur 16 bits et constitue l'identification utilisée pour reconstituer les différents fragments.
            unsigned short        ip_off; // Codé sur ce bits cette valeur comporte le flag (3 bits indiquant l'état de la fragmentation) et le champ Position fragment (13 bits indiquant la position du fragment par rapport à la première trame)
            unsigned int        ip_ttl; // Time To Live : la durée de vie du socket.
            unsigned int        ip_proto; // Le protocol utilisé pour transporter les données. Peut être tcp(6), udp(17), icmp(1)
            unsigned short        ip_sum; // Le checksum du datagram
            unsigned int        ip_src; //Adresse IP source
            unsigned int        ip_dst; // Adresse IP destination
        };
     
        struct ICMP_HEADER 
        { 
            unsigned char        icmp_type; // Permet d'identifier le type de message envoyé ou recu (0 = Echo Reply, 8 = Echo Request, 11 = TTL exceeded)
            unsigned char        icmp_code; // Associé au champ type il représente la définition de message d'erreur.
            unsigned short        icmp_cksum; // Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 3 ICMP
            unsigned short        icmp_id; // 16 bits définissant l’identifiant de l’émetteur
            unsigned short        icmp_seq; // 16 bits permettant au récepteur d’identifier si il manque un paquet
        };
     
        struct ICMP_PAQUET
        {
            struct IP_HEADER    ip;
            struct ICMP_HEADER   icmp;
        };
    Si quelqu'un a une idée sur mon problème, je suis preneur. si vous souhaitez voir mon code plus en détail ou s'il n'y a pas assé de détails je suis à l'écoute.

    merci d'avance.

  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 serais preneur d'une petite piste ... , meme si elle est petite!

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

Discussions similaires

  1. [MySQL] message d'erreur lors de l'envois des données du formulaires
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/12/2008, 17h14
  2. Problème lors de l'envoi de données via laision RS 232
    Par Rastaforien dans le forum Langage
    Réponses: 9
    Dernier message: 26/06/2008, 11h54
  3. Problème lors de l'envoi de données via laison RS 232
    Par Rastaforien dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 23/06/2008, 16h36
  4. Réponses: 2
    Dernier message: 13/02/2007, 16h53
  5. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18

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