11
votes

Comment énumérer toutes les interfaces réseau disponibles?

Comment énumérer toutes les interfaces réseau actuellement disponibles sur l'ordinateur (y compris les virtuels, non connectés, le bouclage, etc.)?

Je dois connaître leur IP4 / 6, masque, passerelle, DNS, WINS, etc.


langue: c ++, winapi

système: Windows 2000 et supérieur (y compris Win7)


1 commentaires

Considérez cette question: Stackoverflow.com/Questtions/3069082/...


3 Réponses :


7
votes

Jetez un oeil à http://www.codeproject.com/KB/IP/ netcfg.aspx. Il est un exemple géant de ce que vous voulez faire.


3 commentaires

@bmarguliesm, vous êtes le vrai gourou de la mise en réseau! Merci beaucoup.


Je me rends compte que c'est une ancienne réponse vraiment , mais y a-t-il une chance que vous puissiez le modifier pour correspondre à de nouvelles normes de qualité? (c'est-à-dire non liaison uniquement)


Je n'ai pas accès aux fenêtres. N'hésitez pas à le faire.



9
votes

On dirait que vous voulez une combinaison de quelques fonctions différentes.

Pour obtenir une liste d'adaptateurs avec leurs adresses / masques IPv4, des serveurs WINS associés et des serveurs DNS, vous pouvez utiliser gettadaptersinfo . Pour obtenir des adresses IPv6, vous pouvez utiliser gettadaptersAdresses .

Selon ce qui est inclus dans votre "etc." Vous pouvez également vouloir getFTAble et gettifentry . Gestiftable Obtient une liste des adaptateurs réseau. Getifentry Vous obtient des informations sur chacun. Celles-ci récupérent des choses comme la quantité de données qui ont été transmises / récupérées sur une interface particulière. Il y a aussi un getiftable2 / getifentry2 uniquement pour Vista et plus récent qui obtiennent plus d'informations.

Si la mémoire sert, getFTAble / gettifentry liste tous les interfaces les interfaces de la machine. gettadaptersinfo fonctionne uniquement avec les "vrais" adaptateurs.


1 commentaires

+1 Merci, Jerry. Je vais étendre la solution de @bmargulies avec vos recommandations



6
votes

perverse, vous pouvez utiliser gettaddrinfo ("..locallachine") pour énumérer des interfaces sous Windows 2003 +.

http://msdn.microsoft.com /en-us/library/ms738520(V=VS.85).aspx

Windows 7 avec Service Pack 1 (SP1) et Windows Server 2008 R2 avec Service Pack 1 (SP1) Ajoutez prise en charge de masquer les interfaces.

http://support.microsoft.com/kb/2386184


1 commentaires

Cela n'a pas encore de upvotes? La solution la plus élégante de tous! Merci!