我使用GetAdapterAddresses()方法获取系统上所有接口的ip地址。
我需要找到每个接口的广播地址。我可以使用IP地址和子网掩码来计算这个值,但是在IP_ADAPTER_ADDRESSES结构中看不到子网掩码。
是否有使用GetAdapterAddresses()检索子网掩码的方法?
发布于 2014-07-11 20:13:19
GetAdapterAddresses()只在Vista和更高版本上提供子网掩码。
当循环遍历IP_ADAPTER_ADDRESSES记录的IP_ADAPTER_ADDRESSES字段所指向的单播地址时,IP_ADAPTER_UNICAST_ADDRESS记录包括一个OnLinkPrefixLength字段。此字段在前Vista系统中不可用.此字段是子网掩码的长度(以位为单位)。对于IPv4单播地址,可以使用ConvertLengthToIpv4Mask()将OnLinkPrefixLength值转换为子网掩码,然后可以使用该掩码根据需要屏蔽单播IPv4地址。
在预Vista系统上,使用GetIpAddrTable()获取可用IPv4接口的列表.MIB_IPADDRROW记录包含用于IPv4地址的dwAddr字段、用于子网掩码的dwMask字段和用于广播地址的dwBCastAddr字段。您可以在该表中循环查找GetAdapterAddresses()报告的每个单播GetAdapterAddresses()地址,然后您将拥有它们相关的子网掩码和广播IP地址。
https://stackoverflow.com/questions/24702408
复制相似问题