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 :

Socket fonction ioctl


Sujet :

Réseau C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut Socket fonction ioctl
    bonjour a tous !
    je suis en pleine phase d'apprentissage sur les socket de niveau bas (niveau 2 socket RAW PF_PACKET) je cherche en ros a créer une tram arp en utilisant les socket. j'examine un code et je suis tombé sur une fonction dont je ne comprend rien. le man du ternimal et mes multiples recherches n'ont pas reussi a resoudre ce probleme. la description et l'explication de la fonction sont trouvable sur google c'est sur mais je n'arrive pas a comprendre le fnctionnement.
    cette fonction c'est ioctl(). et plus precisement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ioctl(fd, SIOCGIFINDEX, &ifr)
    ioctl(fd, SIOCGIFFLAGS, &ifr)
    ioctl(fd, SIOCSIFFLAGS, &ifr)
    la structure ifr a son champs name remplie de l'interface resaux (eth0 eth1...)

    voici mes questions:
    comment marche la fonction ioctl??
    ou trouver la signifaction des constantes (deuxieme parametres de ioctl) dans le man sa dit de regarder dans ioctl.h mais je ne trouve pas ces constantes...
    un peu de renseignement sur la structure ifr (struct ifreq) car difficelement trouvable sur google ajouté au fait que je en comprend pas

    merci a tous !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    man ioctl
    http://www.opengroup.org/onlinepubs/...ons/ioctl.html

    comme son nom l'indique :

    io (Input OutPut) ctl (ConTroL)

    tu as aussi

    fcntl pour les Files Control

  3. #3
    Membre très actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Par défaut
    Aujourd'hui est paru un tuto assez intéressant ..merci à jessee Edouard.
    http://melem.developpez.com/reseaux/rawsockets/

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    tout d'abord merci de vos reponses !
    j'ai lu tout le tuto parut aujourd'hui ou hier je ne me souvient pas et je le trouve fort interessant. j'ai pu aquerrir des connaissance suplementaire sur la gestion et la construction d'un en-tete d'ip.
    mais malheuresement cela ne repond pas vraiment a mon probleme.
    j'ai lu la page de man en anglais de la fonction ioctl et je retrouve toujour la meme definition que je ne comprend pas....
    paut-etre qu'il n'y a rien a comprendre aussi.
    j'en retire que la fonction est capable de modifier le comportement d'un periferique ou d'un fichier special caracterisé pas un descripteur de fichier ouvert. sauf qe je n'ai toujours pas trouvé la siggnification du deuxieme paramètre que j'ai définie dans mon post.
    et je ne comprend toujour pas l'utilité de la structure ifreq puisque on utilise uniquement le champs "name" autant utiliser un char *.
    si qunlqu'un peut m'éclaircir ce serai apprécié.
    merci

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    le deuxième paramètre est un flag (bit) qui indique quel est le paramètre et son type passé par adresse dans le 3ième paramètre...


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    je pense avoir compris sa....
    je veux juste savoir ou trouver ces constantes car je ne les trouvent nulle part. et le denier parametres je n'est toujours pas compris l'interet
    merci de ta reponce

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    d'abord, écris en français, s'il te plait..

    je pense avoir compris ça....
    je veux juste savoir ou trouver ces constantes car je ne les trouve nulle part. et le denier parametre je n'ai toujours pas compris l'interet
    merci de ta reponse
    dans ioctl.h

    Et aussi quand tu fais "man ioctl", à la fin, tu dois avoir "référence ioctl (7)" sans doute...

    Ce qui veut dire faire

    man 7 ioctl

    Le dernier paramètre sert à communiquer entre ton programme et la biblothèque. C'est pour ça que c'est une adresse, et que part exemple tu lui mets, comme dans ton exemple, le nom du type de connection..

    Mais tu pourrais lui mettre un entier (adresse IP par exemple), un bit (flag de lecture ou d'écriture), etc etc...

    Cela sert de buffer de dialogue. Soit tu lui passes une valeur, soit il t'en renvoie une...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Par défaut
    merci de m'avoir répondu.
    désolé je vais faire attention à mon français.
    j'ai trouvé sur internet la signification des constantes et j'ai vaguement compris l'histoire du dernier paramètre.
    j'ai une dernière question a présent.

    si on revient sur mon code du début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ioctl(fd, SIOCGIFINDEX, &ifr)
    où :
    fd : descripteur de fichier ouvert representant une socket de type RAW
    SIOCGIFINDEX : doit récupérer l'index de l'interface contenue dans ifr ( si j'ai bien compris)
    ifr : dont le seul champs "name" est rempli

    donc ici le deuxième paramètre récupère l'index de l'interface définie dans ifr ( pourquoi avoir besoin de cet index et que représente -t- il?)

    et plus concrtement à quoi sert l'appel de cette fonction....
    je sais ce que veulent dire tous les paramètre mais je ne comprend pas l'effet de l'appel de cette fonction.
    merci pour vos eventuels eclaircissements

Discussions similaires

  1. socket : fonction bind
    Par hammag dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 21/11/2006, 20h09
  2. Socket : fonction recv.
    Par thieum74 dans le forum C++
    Réponses: 7
    Dernier message: 06/04/2006, 10h18
  3. [SOCKET] Fonction bind()
    Par chacal dans le forum Développement
    Réponses: 13
    Dernier message: 19/12/2005, 14h22
  4. Réponses: 2
    Dernier message: 31/05/2005, 09h50
  5. Gestion de sockets: fonction Accept
    Par keupon dans le forum MFC
    Réponses: 12
    Dernier message: 22/01/2004, 18h48

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