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 :

problème portage ioctl socket Linux vers Windows


Sujet :

Réseau C

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut problème portage ioctl socket Linux vers Windows
    Bonjour tout le monde !

    Je suis en train de porter un code (écrit en C) depuis Linux vers Windows.
    Ce code est principalement orienté réseau, et je m'en sors globalement.

    Sauf que les ioctl() de Linux sont beaucoup plus nombreux que ceux de Windows.
    Et là, je coince sur le changement d'état d'une interface réseau.

    L'appel Linux est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct ifreq ifr;
    SOCKET m_socket;
    if (ioctl(m_socket, SIOCSIFFLAGS, &ifr) != 0)
    {}
    Je ne trouve pas d'équivalent Windows...
    Je cherche sans doute mal, et dans ce cas, je veux bien des pointeurs vers de bons sites/livres ! .

    Merci d'avance pour vos réponses.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Sans les flags que tu claques dans ta carte, ça ne va pas être simple de savoir ce que tu veux faire...

    Je suppose que tu veux activer le mode promiscuous sur ta carte ? Si oui, alors il te faudra aller voir cette page pour les détails sur Windows. Il te faudra bien sûr être administrateur pour avoir l'autorisation d'effectuer cette opération.
    Sinon, une solution viable est d'utiliser WinPCAP pour capturer ton réseau, ce qui est alors faisable aussi en mode non-administrateur.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Salut et merci de t'intéresser à mon problème :-).
    Le flag en question est IFF_UP.

    J'ai d'autres soucis du même genre, par exemple, des appels à ioctl() avec SIOCGETTUNNEL, SIOCADDTUNNEL, etc.

    Merci encore.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Faut aller voir du côté de WSAIoctl et de INTERFACE_INFO(_EX) pour tout ça.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    J'ai déjà regardé de ce côté là, et j'ai trouvé comment récupérer l'état d'une interface (donc, l'état du flag IFF_UP).
    Par contre, je ne trouve pas comment modifier l'état !
    Je dois sûrement mal lire...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Ah oui, tiens, apparemment l'IOCTL "SET" correspondant n'existe pas... Ceci étant dit, pourquoi veux-tu faire tomber l'interface réseau ? Sous Windows, c'est en général une assez mauvaise idée de flinguer l'accès réseau "à la volée"... Quel est le but recherché derrière ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    En fait, c'est l'effet inverse que je recherche: mettre up une interface qui est down (mais certes, je dois pouvoir le faire dans les deux sens).
    Le cas est la création d'un tunnel: si l'interface réseau est down, je veux pouvoir la mettre up.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Passes alors par WMI et Win32_NetworkAdapter : ça devrait résoudre ton problème. Il y a peut-être plus simple d'accès, mais pour faire par programme ce que l'on fait habituellement via des clics, WMI est en général la meilleure solution (quand ce n'est pas la seule ! ).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci. Petit soucis: je code en C, et cette classe est C++ (évidemment, c'est une classe :-) ).
    Je vais voir ce que je peux faire pour résoudre ça.
    D'après ce que tu dis, il y a d'autres méthodes ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  10. #10
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par progfou Voir le message
    Merci. Petit soucis: je code en C, et cette classe est C++ (évidemment, c'est une classe :-) ).
    Vi, mais t'as pas encore pris ton café et tu as lu en diagonale : WMI possède des interfaces COM, donc utilisables en C...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  11. #11
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    J'étais en plein dedans :-).
    Mais je suis pas vraiment spécialiste de la programmation Windows...
    Donc, je cherche maintenant le lien entre ces interfaces COM et le Win32_NetworkAdapter.

    Je vais y arriver ! :p
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  12. #12
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Pour tout dire, je trouve cela drôlement compliqué...
    C'est pourtant pas dur: je voudrais passer un nom d'interface (un char* quoi), et si c'est down, faire up.
    J'ai comme l'impression qu'il va me falloir des dizaines de lignes de code pour ça... Je me complique sans doute ??
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par progfou Voir le message
    Pour tout dire, je trouve cela drôlement compliqué...
    C'est pourtant pas dur: je voudrais passer un nom d'interface (un char* quoi), et si c'est down, faire up.
    J'ai comme l'impression qu'il va me falloir des dizaines de lignes de code pour ça... Je me complique sans doute ??
    Non, c'est "normal".
    Windows n'est pas prévu pour être un OS bas niveau, contrairement à Linux, d'où ta "difficulté" à effectuer des opérations simples sous *nix, et qui sont "difficiles" d'accès sous Windows.
    A contrario, des fonctions de plus haut niveau sont bien plus accessibles sous Windows que sous *nix, et/ou ne dépendent pas de la présence de librairies tierces... Chaque OS a ses avantages et inconvénients, il n'est par exemple pas habituel sous Windows de laisser un programme manipuler les connexions réseau à sa guise !

    Pour le reste, les interfaces COM ne sont pas difficiles à utiliser, ça demande juste un peu de rigueur : on initialise COM, on récupère l'objet requis, on travaille avec et enfin on finalise COM. Bête et méchant, donc, mais ça ne se fait pas en une ou deux lignes de code en effet.

    Tu peux aussi regarder du côté du forum "Programmation Windows", pour savoir s'il y a une façon plus simple de procéder, ou faire un CreateProcess avec des commandes natives (genre ipconfig, net, etc.) pour effectuer l'opération comme si tu le faisais en Batch. Mais là, on commence à taper dans un tout autre registre...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  14. #14
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    J'ai juste à trouver comment effectuer ces opérations là:
    on initialise COM, on récupère l'objet requis, on travaille avec et enfin on finalise COM
    Dans mon cas précis, je ne sais pas récupérer l'objet et travailler avec...
    Tu penses pouvoir me fournir l'exemple (sans les vérifs évidemment, mais juste le truc direct).
    Je comprendrai sûrement mieux avec un exemple...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  15. #15
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Cette page par exemple...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  16. #16
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci je ne connaissais pas ce lien ;-).
    M'en vais lire tout cela !
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  17. #17
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Cette page par exemple...
    Oh non, tu as pris le plus mauvais sur le site qui propose le meilleur:
    COM in plain C en 8 chapitres, un must read!
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  18. #18
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Oh non, tu as pris le plus mauvais sur le site qui propose le meilleur:COM usage in C
    J'ai surtout recherché "COM usage in C", ni plus, ni moins...
    De plus, il cherche comment utiliser un objet COM, pas comment en créer un...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  19. #19
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Bon, j'ai pas eu le temps de me plonger dans le tuto pour le moment, mais ce n'est pas clair...
    Mon objet COM, dans mon cas précis, c'est Win32_NetworkAdapter ?
    Ou alors un des trucs de WMI parmi ceux-ci:
    http://msdn.microsoft.com/en-us/libr...76(VS.85).aspx

    En fait, je ne vois pas encore le lien entre les deux, pour pouvoir utiliser COM dans mon programme et "jouer" avec mon interface comme semble le permettre Win32_NetworkAdapter...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  20. #20
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    De plus, il cherche comment utiliser un objet COM, pas comment en créer un...
    Qui a dit le contraire?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/05/2014, 10h44
  2. debogage et portage d'une biblio de linux vers windows
    Par shadowless dans le forum Langage
    Réponses: 3
    Dernier message: 03/05/2011, 09h08
  3. Portage de linux vers windows d'une bibliothèque
    Par shadowless dans le forum Débuter
    Réponses: 31
    Dernier message: 24/04/2011, 23h58
  4. Problème portage code Linux vers Windows
    Par scary dans le forum Windows
    Réponses: 14
    Dernier message: 11/01/2010, 17h56
  5. Problème de portage Linux vers Windows, wxwidgets
    Par zoom* dans le forum wxWidgets
    Réponses: 6
    Dernier message: 22/07/2008, 09h59

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