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

时间:2014-07-11 05:58:08

标签: c# subnet system-information

我正在制作一个程序,其中包括收集系统信息。但是我在获取子网掩码时遇到了一些问题。我是编程新手,所以这可能与我缺乏技能有关。 我的代码如下所示:

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。我已经禁用或卸载了其他网卡,但我仍然得到了这个结果。

1 个答案:

答案 0 :(得分:1)

您是否知道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)