获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比
通过适配器判断网络连接类型及状态
判断网络的连接状态/连接类型,可以直接查看网络适配器列表的状态
适配器列表:

1 public static NetworkInterface[] GetAllAdapters() 2 { 3 //获取本地计算机上网络接口的对象 4 NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); 5 //Debug.WriteLine("适配器个数:" + adapters.Length); 6 //foreach (NetworkInterface adapter in adapters) 7 //{ 8 // Debug.Write("描述:" + adapter.Description); 9 // Debug.Write("标识符:" + adapter.Id); 10 // Debug.Write("名称:" + adapter.Name); 11 // Debug.Write("类型:" + adapter.NetworkInterfaceType); 12 // Debug.Write("速度:" + adapter.Speed * 0.001 * 0.001 + "M"); 13 // Debug.Write("操作状态:" + adapter.OperationalStatus); 14 // Debug.Write("MAC 地址:" + adapter.GetPhysicalAddress()); 15 16 // //格式化显示MAC地址 17 // PhysicalAddress pa = adapter.GetPhysicalAddress();//获取适配器的媒体访问(MAC)地址 18 // byte[] bytes = pa.GetAddressBytes();//返回当前实例的地址 19 // StringBuilder sb = new StringBuilder(); 20 // for (int i = 0; i < bytes.Length; i++) 21 // { 22 // sb.Append(bytes[i].ToString("X2"));//以十六进制格式化 23 // if (i != bytes.Length - 1) 24 // { 25 // sb.Append("-"); 26 // } 27 // } 28 // Debug.WriteLine("MAC 地址:" + sb); 29 30 //} 31 return adapters; 32 }
连接类型,使用适配器的类型或者描述来筛选不准确。我暂时是用名称来筛选的
有线连接状态:
1 /// <summary> 2 /// 有线连接 3 /// </summary> 4 /// <returns></returns> 5 public static bool IsWiredNetworkConnected() 6 { 7 var adaters = NetworkInterfaceHelper.GetAllAdapters(); 8 if (adaters.Any(i => (i.Name.ToString().Contains("以太网")||i.Name.ToString().Contains("拨号")||i.Name.ToString().Contains("宽带")) && i.OperationalStatus == OperationalStatus.Up)) 9 { 10 return true; 11 } 12 return false; 13 }
无线连接状态:
1 /// <summary> 2 /// 无线连接 3 /// </summary> 4 /// <returns></returns> 5 public static bool IsWirelessNetworkConnected() 6 { 7 var adaters = NetworkInterfaceHelper.GetAllAdapters(); 8 if (adaters.Any(i => i.Name.ToString().Contains("WLAN") && i.OperationalStatus == OperationalStatus.Up)) 9 { 10 return true; 11 } 12 return false; 13 }
其中,OperationStatus是适配器的连接状态,Up是网络连接状态,还有其它枚举:
判断网络类型,推荐以上方案,比IsNetworkAlive准确度高。当然这个耗时也偏高,基本在20-30ms。
几种方案的连接耗时
有线连接下耗时:
无线连接下耗时:
断网状态下耗时:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)