11

我正在使用该GetAdapterAddresses()方法获取系统上所有接口的IP地址。

我需要找到每个接口的广播地址。我可以使用 IP 地址和子网掩码进行计算,但在 IP_ADAPTER_ADDRESSES 结构中看不到子网掩码。

有没有办法使用检索子网掩码GetAdapterAddresses()

4

1 回答 1

18

GetAdapterAddresses()仅在 Vista 及更高版本上提供子网掩码。

FirstUnicastAddress当循环通过记录的字段所指向的单播地址时IP_ADAPTER_ADDRESSESIP_ADAPTER_UNICAST_ADDRESS记录包括一个OnLinkPrefixLength字段。此字段在 Vista 之前的系统上不可用。该字段是子网掩码的长度,以位为单位。对于 IPv4 单播地址,您可以使用ConvertLengthToIpv4Mask()OnLinkPrefixLength值转换为子网掩码,然后您可以根据需要使用它来屏蔽单播 IPv4 地址。

在 Vista 之前的系统上,用于GetIpAddrTable()获取可用 IPv4 接口的列表。该MIB_IPADDRROW记录包含一个dwAddrIPv4 地址dwMask字段、一个子网掩码字段和一个dwBCastAddr广播地址字段。您可以遍历该表以查找由 报告的每个单播 IPv4 地址GetAdapterAddresses(),然后您将获得它们关联的子网掩码和广播 IP 地址。

于 2014-07-11T20:13:19.657 回答