c#无法获得正确的子网掩码

本文关键字:子网掩码 | 更新日期: 2023-09-27 18:12:21

我正在编写一个收集系统信息的程序。然而,我有一些问题获得子网掩码。我是编程新手,所以这可能与我缺乏技能有关。我的代码是这样的:

public string Subnet()
{
     string Maske = "";
     foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
     if (f.OperationalStatus == OperationalStatus.Up)
     {
         IPInterfaceProperties ipInterface = f.GetIPProperties();
         foreach (UnicastIPAddressInformation unicastAddress in ipInterface.UnicastAddresses)
         {
             Maske = unicastAddress.IPv4Mask.ToString();
         }
     }
     return Maske;
}

结果我只得到255.0.0.0。我已经禁用或卸载了其他网卡,但我仍然得到这个结果

c#无法获得正确的子网掩码

你知道在ipInterface中可能有不止一个条目吗?UnicastAddresses或NetworkInterface.GetAllNetworkInterfaces()?你的方法只取最后一个找到的。我在我的电脑上测试了你的方法,列表包含三个条目:255.255.255.0,0.0.0.0和255.0.0.0…

编辑:您可能需要忽略带有NetworkInterfaceType Loopback的网络接口,因为有时会安装一些虚拟软件接口…

if (f.OperationalStatus == OperationalStatus.Up && f.NetworkInterfaceType != NetworkInterfaceType.Loopback)