下面是一段代码,它建立了来自本地系统的IP地址及其子网掩码列表,但是警告函数似乎会定期触发,理论上这应该是不可能的 - 因为它不应该有一个没有相关子网掩码的IPv4地址[?]。为什么UnicastIPAddressInformation.IPv4Mask在IPv4地址上返回空值?
static NetworkUtil()
{
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
foreach (UnicastIPAddressInformation address in ni.GetIPProperties().UnicastAddresses)
{
if (address.Address.AddressFamily == AddressFamily.InterNetwork)
{
if (address.IPv4Mask != null)
{
m_subnets.Add(address.Address, address.IPv4Mask);
}
else
{
m_log.Warn("[NetworkUtil] Found IPv4 Address without Subnet Mask!?");
}
}
}
}
}