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

And*_*rew 10 c++ networking winapi enumeration interface

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

我需要知道他们的IP4/6,Mask,Gateway,DNS,WINS等


语言: C++,WinAPI

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

Jer*_*fin 8

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

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

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

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


bma*_*ies 6

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


Ste*_*e-o 5

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

http://msdn.microsoft.com/zh-CN/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