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吗?