如何枚举计算机上当前可用的所有网络接口(包括虚拟,非连接,环回等)?
我需要知道他们的IP4 / 6,掩码,网关,DNS,WINS等
语言: C ++,WinAPI
系统: Windows 2000及更高版本(包括Win7)
答案 0 :(得分:8)
听起来你想要一些不同功能的组合。
要获取具有IPv4地址/掩码,关联的WINS服务器和DNS服务器的适配器列表,您可以使用GetAdaptersInfo
。要获取IPv6地址,您可以使用GetAdaptersAddresses
。
取决于“等”中包含的内容您可能还需要GetIfTable
和GetIfEntry
。 GetIfTable
获取网络适配器列表。 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)添加了对隐藏接口的支持。