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

C++ 如何枚举所有可用的网络接口?,c++,winapi,networking,interface,enumeration,C++,Winapi,Networking,Interface,Enumeration,如何枚举计算机上当前可用的所有网络接口(包括虚拟、未连接、环回等) 我需要知道他们的IP4/6、掩码、网关、DNS、WINS等 语言:C++,WinAPI < /P> 系统:Windows 2000及更高版本(包括Win7)请查看。这是你想要做的一个巨大的例子。听起来你想要几个不同功能的组合 要获取适配器及其IPv4地址/掩码、关联的WINS服务器和DNS服务器的列表,可以使用getAdapterInfo。要获取IPv6地址,可以使用getAdapterAddresses 根据“etc”中包含

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

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


语言:C++,WinAPI < /P>


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

请查看。这是你想要做的一个巨大的例子。

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

要获取适配器及其IPv4地址/掩码、关联的WINS服务器和DNS服务器的列表,可以使用
getAdapterInfo
。要获取IPv6地址,可以使用
getAdapterAddresses

根据“etc”中包含的内容,您可能还需要
GetIfTable
GetIfEntry
GetIfTable
获取网络适配器的列表
GetIfEntry
为您获取有关每个项目的信息。这些函数可以检索通过特定接口传输/检索的数据量。还有一个
GetIfTable2
/
GetIfEntry2
,仅适用于获取更多信息的Vista和更新版本


如果内存可用,
GetIfTable
/
GetIfEntry
列出机器中的所有接口
GetAdapterInfo
仅适用于“真实”适配器。

您可以使用
getaddrinfo(“…localmachine”)
枚举Windows 2003+上的接口

带有Service Pack 1(SP1)的Windows 7和带有Service Pack 1(SP1)的Windows Server 2008 R2添加了隐藏接口的支持


@bmarguliesm,你是真正的网络大师!非常感谢。我意识到这是一个非常古老的答案,但您是否有机会编辑它以符合SO的新质量标准?(即不仅仅是链接)我没有访问windows的权限。别客气。谢谢你,杰瑞。考虑到这个问题,我将根据您的建议扩展@bmargiles的解决方案:这还没有投票吗?最优雅的解决方案!谢谢