我正在使用该GetAdapterAddresses()
方法获取系统上所有接口的IP地址。
我需要找到每个接口的广播地址。我可以使用 IP 地址和子网掩码进行计算,但在 IP_ADAPTER_ADDRESSES 结构中看不到子网掩码。
有没有办法使用检索子网掩码GetAdapterAddresses()
?
GetAdapterAddresses()
仅在 Vista 及更高版本上提供子网掩码。
FirstUnicastAddress
当循环通过记录的字段所指向的单播地址时IP_ADAPTER_ADDRESSES
,IP_ADAPTER_UNICAST_ADDRESS
记录包括一个OnLinkPrefixLength
字段。此字段在 Vista 之前的系统上不可用。该字段是子网掩码的长度,以位为单位。对于 IPv4 单播地址,您可以使用ConvertLengthToIpv4Mask()
将OnLinkPrefixLength
值转换为子网掩码,然后您可以根据需要使用它来屏蔽单播 IPv4 地址。
在 Vista 之前的系统上,用于GetIpAddrTable()
获取可用 IPv4 接口的列表。该MIB_IPADDRROW
记录包含一个dwAddr
IPv4 地址dwMask
字段、一个子网掩码字段和一个dwBCastAddr
广播地址字段。您可以遍历该表以查找由 报告的每个单播 IPv4 地址GetAdapterAddresses()
,然后您将获得它们关联的子网掩码和广播 IP 地址。