通过适配器判断网络连接类型及状态

判断网络的连接状态/连接类型,可以直接查看网络适配器列表的状态

获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比_网络适配器

适配器列表:

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

View Code

连接类型,使用适配器的类型或者描述来筛选不准确。我暂时是用名称来筛选的

有线连接状态:

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是网络连接状态,还有其它枚举:

获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比_标识符_02

 判断网络类型,推荐以上方案,比IsNetworkAlive准确度高。当然这个耗时也偏高,基本在20-30ms。

几种方案的连接耗时

有线连接下耗时:

获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比_网络适配器_03

无线连接下耗时:

获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比_无线连接_04

断网状态下耗时:

获取电脑的网络连接状态(六)适配器状态 及 几种方案耗时对比_无线连接_05

 Demo:​​https://github.com/Kybs0/NetworkConnectStatusDemo​


作者:唐宋元明清2188

本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。