Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#can';无法获得正确的子网掩码_C#_Subnet_System Information - Fatal编程技术网

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

C#can';无法获得正确的子网掩码,c#,subnet,system-information,C#,Subnet,System Information,我正在制作一个收集系统信息的程序。但是,我在获取子网掩码时遇到一些问题。我是编程新手,所以这可能与我缺乏技能有关。 我的代码如下所示: public string Subnet() { string Maske = ""; foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces()) if (f.OperationalStatus == OperationalStatus.Up)

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

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

您是否知道ipInterface.unicastaddress或NetworkInterface.GetAllNetworkInterfaces()中可能有多个条目?您的方法只取最后找到的方法。我在我的电脑上测试了你的方法,列表包含三个条目:255.255.255.0、0.0.0.0和255.0.0.0

编辑:您可能需要使用NetworkInterfaceType环回忽略网络接口,因为有时会安装一些虚拟软件接口

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

预期的子网掩码是什么?在大多数情况下(家庭网络),它是255.255.255.0,但您的网络可能配置为使用255.0.0.0。(要验证,您可以使用cmd.exe->ipconfig)预期值为:255.255.255.0是,或者至少我预期会是这样。这就是我试图禁用其他卡的原因。有没有办法只从正在使用的一张卡中获取信息?不需要多张卡的信息。“OperationalStatus.Up”不应该过滤掉未使用的once吗?