如何枚举所有可用的网络接口?

时间:2011-03-06 21:44:30

标签: c++ winapi networking interface enumeration

如何枚举计算机上当前可用的所有网络接口(包括虚拟,非连接,环回等)?

我需要知道他们的IP4 / 6,掩码,网关,DNS,WINS等


语言: C ++,WinAPI

系统: Windows 2000及更高版本(包括Win7)

3 个答案:

答案 0 :(得分:8)

听起来你想要一些不同功能的组合。

要获取具有IPv4地址/掩码,关联的WINS服务器和DNS服务器的适配器列表,您可以使用GetAdaptersInfo。要获取IPv6地址,您可以使用GetAdaptersAddresses

取决于“等”中包含的内容您可能还需要GetIfTableGetIfEntryGetIfTable获取网络适配器列表。 GetIfEntry可以获取有关每个的信息。这些检索诸如通过特定接口传输/检索的数据量之类的事情。还有一个GetIfTable2 / GetIfEntry2仅适用于Vista和更新版本以获取更多信息。

如果内存服务,GetIfTable / GetIfEntry列出所有机器中的接口。 GetAdaptersInfo仅适用于“真正的”适配器。

答案 1 :(得分:6)

看看http://www.codeproject.com/KB/IP/netcfg.aspx。这是你想要做的一个很好的例子。

答案 2 :(得分:4)

反过来,您可以使用getaddrinfo ("..localmachine")枚举Windows 2003 +上的接口。

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

Windows 7 Service Pack 1(SP1)和Windows Server 2008 R2 Service Pack 1(SP1)添加了对隐藏接口的支持。

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