如何在C#应用程序中查询Windows网络适配器的子网掩码?
Windows下用C#查询网络适配器子网掩码的方法
可以通过.NET的System.Net.NetworkInformation命名空间实现查询,以下是具体代码示例:
using System; using System.Net.NetworkInformation; class NetworkMaskQuery { static void Main() { // 获取系统中所有网络适配器 foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { // 筛选启用状态的有线/无线网卡(可按需调整筛选条件) if ((ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet || ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) && ni.OperationalStatus == OperationalStatus.Up) { Console.WriteLine($"适配器名称: {ni.Name}"); Console.WriteLine($"适配器描述: {ni.Description}"); // 获取适配器IP配置属性 IPInterfaceProperties ipProps = ni.GetIPProperties(); foreach (UnicastIPAddressInformation ipAddrInfo in ipProps.UnicastAddresses) { // 仅处理IPv4地址(如需IPv6可修改AddressFamily判断) if (ipAddrInfo.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { Console.WriteLine($"IPv4地址: {ipAddrInfo.Address}"); Console.WriteLine($"子网掩码: {ipAddrInfo.IPv4Mask}"); Console.WriteLine("---"); } } } } } }
关键说明
NetworkInterface.GetAllNetworkInterfaces():获取系统内所有网络适配器,包括虚拟网卡、禁用设备等,需通过筛选条件缩小范围。OperationalStatus.Up:仅筛选处于启用状态的适配器,避免获取无效配置。IPv4Mask属性:直接对应IPv4的子网掩码;若需查询IPv6前缀长度,可使用ipAddrInfo.PrefixLength属性。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

