我正在制作一个程序,其中包括收集系统信息。但是我在获取子网掩码时遇到了一些问题。我是编程新手,所以这可能与我缺乏技能有关。 我的代码如下所示:
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。我已经禁用或卸载了其他网卡,但我仍然得到了这个结果。
答案 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)