如何枚举计算机上当前可用的所有网络接口(包括虚拟,非连接,环回等)?如何枚举所有可用的网络接口?
我需要知道他们的IP4/6,掩码,网关,DNS,WINS等
语言: C++,WinAPI的
系统: Windows 2000及更高版本(包括Win7的)
如何枚举计算机上当前可用的所有网络接口(包括虚拟,非连接,环回等)?如何枚举所有可用的网络接口?
我需要知道他们的IP4/6,掩码,网关,DNS,WINS等
语言: C++,WinAPI的
系统: Windows 2000及更高版本(包括Win7的)
看一看http://www.codeproject.com/KB/IP/netcfg.aspx。这是你想要做的一个巨大的例子。
@bmarguliesm,你联网的真正大师!万分感谢。 – Andrew 2011-03-06 22:03:37
我意识到这是一个老_really_答案,但有您可以编辑任何机会,以配合SO的新的质量标准? (即不是链接) – 2017-02-19 07:35:15
我无权访问窗口。随意做到这一点。 – bmargulies 2017-02-19 15:07:51
这听起来像你想要几个不同的功能的组合。
要获得带有IPv4地址/掩码的适配器列表,关联的WINS服务器和DNS服务器,可以使用GetAdaptersInfo
。要获得IPv6地址,您可以使用GetAdaptersAddresses
。
根据“等”中包含的内容,您可能还需要GetIfTable
和GetIfEntry
。 GetIfTable
获取网络适配器的列表。 GetIfEntry
获取有关每个人的信息。这些检索的东西就像通过特定接口传输/检索的数据量。还有一个GetIfTable2
/GetIfEntry2
只适用于Vista和更新,获取更多信息。
如果内存服务,GetIfTable
/GetIfEntry
列表全部机器中的接口。 GetAdaptersInfo
只适用于“真实”适配器。
+1谢谢,杰瑞。我将与你的建议延长@bmargulies的解决方案 – Andrew 2011-03-06 22:34:46
事与愿违,你可以使用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)的支持添加到隐藏的接口。
这有没有upvotes了吗?所有的最优雅的解决方案!谢谢! – eckes 2014-11-26 08:58:36
考虑这个问题:http://stackoverflow.com/questions/3069082/porting-getifaddrs-to-win-xp – 2011-03-08 06:38:29