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