[C++] liste des interfaces réseaux

Résolu/Fermé
arawns Messages postés 281 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 24 décembre 2014 - 24 déc. 2008 à 16:02
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 25 déc. 2008 à 20:25
Bonjour,

Je souhaites lister les interfaces réseau sur mon poste en winxp.
Avec la commande "netsh interface show interface", j'ai une ligne, mais je ne sais ni envoyer cette commande dans un buffer char* ou string, ni comment ressortir seulement les informations qui m'intéresse.

Pouvez-vous me donner des pistes, des idées ? Merci par avance.

3 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
24 déc. 2008 à 16:48
Bonjour bonjour,

WinPcap: The Windows Packet Capture Library
https://www.winpcap.org/

Et sinon va voir du coté de MSDN :
https://docs.microsoft.com/fr-fr/
0
arawns Messages postés 281 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 24 décembre 2014 41
25 déc. 2008 à 19:37
Bonjour,

Merci beaucoup pour cette réponse, même si je l'a trouve surprenante au vue de ma demande.
Je me permets de reformuler.

1°) Je souhaite lancer la commande sdt::system() et à la place de recevoir le résultat de la commande (réussi ou erreur), je souhaite buffuriser ce que cette commande renvoie.
Par exemple, si je lance un ping, je ne veux pas que system() me renvoie "0" car tout s'est bien passé, mais "ping 127.0.0.1, blah blah..."

2°) Sur ce principe, mon but est de lancer cette commande : "netsh interface show interface".
Voici ce que le programme ce que le programme me renvoi et que je veux buffuriser (voir le petit 1 ci-dessus) :

C:\Documents and Settings\Toto>netsh interface show interface

État admin État Type Nom de l'interface
-------------------------------------------------------------------------
Activé Dédié Connexion 1394
Activé Dédié Connexion au réseau local 3
Activé Dédié Connexion au réseau local
Activé Boucle de rappel Boucle de rappel
Activé Interne Interne


Je veux taiter ce retour pour qu'il me reste dans un char* ou autre chose, que "Connexion 1394", "Connexion au réseau local" et "Connexion au réseau local 3".

Je ne pense pas que Winpcap puisse m'aider (et puis, bonjour la portabilité inter-windows), ni MSDN.

Merci par avance pour vos réponses.




0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
25 déc. 2008 à 20:25
Ok désolée je pensais que tu en avait besoin pour autre chose ^^

Voilà sinon une solution serait de transférer la sortie de la commande "netsh interface show interface" vers un bête fichier.

netsh interface show interface > interfaces.txt


Eventuellement tu peux même faire ceci ou utiliser une autre variable d'environnement afin de le stocker qlq part.
netsh interface show interface > %TEMP%\interfaces.txt


Ensuite tu ouvre ton fichier en séquentiel et tu traite ligne par ligne ça devrait te fournir le résultat attendu non?

Attention que toutes les machines ne sont pas françaises :

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>netsh interface show interface > %TEMP%\test.
txt

C:\>type %TEMP%\test.txt

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled                       Dedicated        Wireless Network Connection
Enabled                       Dedicated        Local Area Connection
Enabled                       Internal         Internal
Enabled                       Loopback         Loopback


C:\>


Voilà perso je pense que c'est possible en C++, je n'en fait pas mais je peux te faire un exemple en C# :)
0