2011-03-06 91 views
10

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

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


语言: C++,WinAPI的

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

+1

考虑这个问题:http://stackoverflow.com/questions/3069082/porting-getifaddrs-to-win-xp – 2011-03-08 06:38:29

回答

5

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

+0

@bmarguliesm,你联网的真正大师!万分感谢。 – Andrew 2011-03-06 22:03:37

+0

我意识到这是一个老_really_答案,但有您可以编辑任何机会,以配合SO的新的质量标准? (即不是链接) – 2017-02-19 07:35:15

+0

我无权访问窗口。随意做到这一点。 – bmargulies 2017-02-19 15:07:51

8

这听起来像你想要几个不同的功能的组合。

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

根据“等”中包含的内容,您可能还需要GetIfTableGetIfEntryGetIfTable获取网络适配器的列表。 GetIfEntry获取有关每个人的信息。这些检索的东西就像通过特定接口传输/检索的数据量。还有一个GetIfTable2/GetIfEntry2只适用于Vista和更新,获取更多信息。

如果内存服务,GetIfTable/GetIfEntry列表全部机器中的接口。 GetAdaptersInfo只适用于“真实”适配器。

+0

+1谢谢,杰瑞。我将与你的建议延长@bmargulies的解决方案 – Andrew 2011-03-06 22:34:46