【发布时间】:2011-07-09 23:25:16
【问题描述】:
如何枚举计算机上当前可用的所有网络接口(包括虚拟、未连接、环回等)?
我需要知道他们的 IP4/6、掩码、网关、DNS、WINS 等
语言: C++、WinAPI
系统: Windows 2000 及更高版本(包括 Win7)
【问题讨论】:
标签: c++ winapi networking interface enumeration
如何枚举计算机上当前可用的所有网络接口(包括虚拟、未连接、环回等)?
我需要知道他们的 IP4/6、掩码、网关、DNS、WINS 等
语言: C++、WinAPI
系统: Windows 2000 及更高版本(包括 Win7)
【问题讨论】:
标签: c++ winapi networking interface enumeration
听起来你想要几个不同功能的组合。
要获取适配器列表及其 IPv4 地址/掩码、关联的 WINS 服务器和 DNS 服务器,您可以使用GetAdaptersInfo。要获取 IPv6 地址,您可以使用GetAdaptersAddresses。
取决于您的“等”中包含的内容。您可能还需要GetIfTable 和GetIfEntry。 GetIfTable 获取网络适配器列表。 GetIfEntry 为您获取有关每个的信息。这些检索诸如通过特定接口传输/检索的数据量之类的东西。还有一个 GetIfTable2/GetIfEntry2 仅适用于 Vista 和更新的获取更多信息的版本。
如果没记错,GetIfTable/GetIfEntry 列出所有机器中的接口。 GetAdaptersInfo 仅适用于“真正的”适配器。
【讨论】:
看看http://www.codeproject.com/KB/IP/netcfg.aspx。这是你想做的一个巨大的例子。
【讨论】:
您可以使用getaddrinfo ("..localmachine") 枚举Windows 2003+ 上的接口。
http://msdn.microsoft.com/en-us/library/ms738520(v=vs.85).aspx
带有 Service Pack 1 (SP1) 的 Windows 7 和带有 Service Pack 1 (SP1) 的 Windows Server 2008 R2 添加了对隐藏接口的支持。
【讨论】: