0

    获取电脑的网络连接状态(六)适配器状态

    2023.08.01 | admin | 133次围观

    本文章向大家介绍获取电脑的网络连接状态(六)适配器状态,主要包括获取电脑的网络连接状态(六)适配器状态使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值适配器中没有本地连接,需要的朋友可以参考一下。

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

    适配器列表:

     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     /// 
     2     /// 有线连接
     3     /// 
     4     /// 
     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     /// 
     2     /// 无线连接
     3     /// 
     4     /// 
     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     }

    判断网络类型,推荐以上方案适配器中没有本地连接,比IsNetworkAlive准确度高。当然这个耗时也偏高,基本在20-30ms。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论