• C#判断联网状态


    方法一:使用InternetGetConnectedState方法

    不推荐使用该API。

      方法体(C++):BOOLAPI InternetGetConnectedState( LPDWORD lpdwFlags, DWORD dwReserved );

      参数说明:

        lpdwFlags:指向接收连接描述的变量的指针。即使函数返回FALSE,此参数也可能返回有效标志。此参数可以是以下一个或多个值。

        

    含义
    INTERNET_CONNECTION_CONFIGURED
    0x40
    本地系统具有到Internet的有效连接,但当前可能连接或可能未连接。
    INTERNET_CONNECTION_LAN
    0x02
    本地系统使用局域网连接到Internet。
    INTERNET_CONNECTION_MODEM
    0x01
    本地系统使用调制解调器连接到Internet。
    INTERNET_CONNECTION_MODEM_BUSY
    0x08
    不再使用。
    INTERNET_CONNECTION_OFFLINE
    0x20
    本地系统处于离线模式。
    INTERNET_CONNECTION_PROXY
    0x04
    本地系统使用代理服务器连接到Internet。
    INTERNET_RAS_INSTALLED
    0x10
    本地系统已安装RAS。

        dwReserved:该参数是保留参数,必须为0。

        返回值:如果存在活动的调制解调器或LAN Internet连接,则返回TRUE;如果没有Internet连接,或者当前所有可能的Internet连接都不处于活动状态,则返回FALSE。

      代码示例:

     1 public static class Internet
     2     {
     3         [DllImport("winInet.dll")]
     4         private static extern bool InternetGetConnectedState(ref int dwFlag, int dwReserved);
     5 
     6         /// <summary>
     7         /// 返回网络状态
     8         /// </summary>
     9         public static bool Status
    10         {
    11             get
    12             {
    13                 Int32 dwFlag = new int();
    14                 if (!InternetGetConnectedState(ref dwFlag, 0))
    15                 {
    16                     return false;
    17                 }
    18                 else
    19                 {
    20                     return true;
    21                 }
    22             }
    23         }
    24     }
    View Code

    方法二:使用nuget安装 WindowsAPICodePack-Core 包,代码示例如下:

     1 public class NetworkHelper
     2     {
     3         /// <summary>
     4         /// 判断是否联网
     5         /// </summary>
     6         /// <param name="networkName">网络名称</param>
     7         /// <returns></returns>
     8         public static bool IsConnectNetwork(string networkName)
     9         {
    10             bool isConnection = false;
    11             NetworkCollection nCollection = NetworkListManager.GetNetworks(NetworkConnectivityLevels.All);
    12             if (nCollection != null && nCollection.Count() > 0)
    13             {
    14                 if (string.IsNullOrEmpty(networkName))
    15                 {
    16                     isConnection = nCollection.Any(t => t.IsConnected);
    17                 }
    18                 else
    19                 {
    20                     isConnection = nCollection.Any(t => t.IsConnected && t.Name.Equals(networkName, StringComparison.InvariantCultureIgnoreCase));
    21                 }
    22                 isConnection = string.IsNullOrEmpty(networkName) ? nCollection.Any(t => t.IsConnected) :
    23                     nCollection.Any(t => t.IsConnected && t.Name.Equals(networkName, StringComparison.InvariantCultureIgnoreCase));
    24             }
    25             return isConnection;
    26         }
    27     }
    View Code
  • 相关阅读:
    异步加载图片体验js任务操作
    模块管理引擎
    window+ electron
    app抓包获取数据,无法获取数据原因
    知乎加密参数xzse96详解
    WPF 可缩放ScrollView(方式二)
    WPF 可缩放ScrollView(方式一)
    GitLab版本管理与CI/CD自动化部署完整实践(windows+docker)
    C#7.2特性Span介绍
    You aren‘t using a compiler supported by lombok, so lombok will not work and has been disabled.
  • 原文地址:https://www.cnblogs.com/lxfl2/p/12567350.html
Copyright © 2020-2023  润新知