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 :

création de socket RAW


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut création de socket RAW
    bonjour tout le monde,

    je n'arrive pas à créer de WSASocket, rien ne marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    socketRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0,0);
    // Si la socket n'est pas créée, un message d'erreur est affiché
    if (socketRaw == INVALID_SOCKET)
    {
    	label_erreur->Text = "Impossible de créer la socket.";
    }
    // Traitement réalisé quand la socket est créée
    else
    {
    	...
    }
    Note lors de l'ouverture de mon programme je suis bien en Admin sur ma machine, de plus je n'ai pas d'eereur sur le reste du code. Le problème est que je rentre toujours dans mon 1er test (if) et jamais dans le else ...

    Donc si quelqu'un a une idée sur ce que je dois faire, je suis preneur.

    Merci d'avance.

    note : si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    socketRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0,0);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socketRaw = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
    le problème reste inchangé.

  2. #2
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Peut-être qu'en ayant le message d'erreur, ce serait plus facile de déterminer l'origine du problème ?


  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    avant de récupérer le message d'eereur, et avant de créer ma socket j'ai rfait un [quote]WSASetLastError(0);[/code]

    suite a la création de ma socket je récupère mon erreur qui est : 10093 --> WSANOTINITIALISED

    et suite a cela je me suis rendu compte que j'avais oublier d'initialiser WSAStartup donc je suis vraiment désolé!!!!

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    Avant la création de ma socket je fais un WSASetLastErreur(0);

    Puis apres la création je fait un WSAGetLastErreur(); ce code me retourne la valeur 6. Cependant cette valeur ne correspond a rien dans la liste de toutes les erreurs générée par cette fonction.

    Quelqu'un connais le type d'erreur associé a ce nombre?????

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 4
    Par défaut
    C' est de la programmation sous Linux.

    Je connais un petit peu grâce au bouquin "Programmation systéme sous Linux"

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    non, c'est de la prog windows. Visual Studio .Net 2003

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Si tu vais un FormatMessage(), tu auras le même message que pour l'erreur 6 de GetLastError() : ERROR_INVALID_HANDLE.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    Mon erreur 6 correspond à un ERROR_INVALID_HANDLE???

    Si oui ca veut dire quoi ( par rapport à mon code)???

    note : Je ne suis pas arrivé à utiliser FormatMessage(), pour savoir ce que représente mon numéro retourné par WSAGetLastError().

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    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
    int erreur = WSAGetLastError();
    char szBuffer[TAILLE_BUFFER];
     
    FormatMessageA(
     FORMAT_MESSAGE_FROM_SYSTEM,
     NULL,
     erreur,
     0,
     szBuffer,
     TAILLE_BUFFER,
     NULL
     );
     
    /* Exemple: un bête puts() */
    puts(szBuffer);
    /* Exemple: affichage dans une MessageBox() */
    MessageBox(NULL, szBuffer, "Erreur", MB_OK | MB_ICONERROR);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Création socket raw
    Par lastrecrue dans le forum Réseau
    Réponses: 1
    Dernier message: 19/06/2008, 21h11
  2. [socket RAW] sendto ne marche pas !
    Par poporiding dans le forum C++
    Réponses: 4
    Dernier message: 18/01/2006, 13h14
  3. création de socket
    Par poporiding dans le forum Débuter
    Réponses: 4
    Dernier message: 05/01/2006, 18h10
  4. Problème socket raw ? bizarre :~
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 12/07/2005, 14h12
  5. App Socket Raw avec VC++6
    Par Martin Soucy dans le forum Développement
    Réponses: 3
    Dernier message: 04/12/2002, 05h07

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