获取系统的网络状态与无线网的信号强度,获取电脑的网络连接状态

图片 2

生机勃勃台微管理机,不经常通过无线网连接网络(调制解调器/局域网卡塔尔,如有网卡也可三回九转wifi。
那么怎么样得到WLAN是或不是连接,和相应的时限信号强度呢?

 决断连网的不二秘籍介绍

就以下俩点:

 1. InternetGetConnectedState

  • 此函数获取网络状态有延时,且对网卡加害很大
  • MSDN官方本人推荐不建议利用,不管是连网状态下依旧断网处境下,获取的网络状态都有不正确的案例,如下:

  (BUG) InternetGetConnectedState API returns false
result

  Detecting LAN connection using InternetGetConnectedState API
doesn’t
work

  

  

在看下文以前,能够浏览MSDN:通过InternetGetConnectedState方法对网络状态的获取.aspx)

如上InternetGetConnectedState方法介绍中

  • dwReversed必需安装为0
  • 通过输出值lpdwFlags能够获取当前网络连接的新闻,通过拼装比较能够收获当前连年的网络项目,如拨号上网/局域网等

    bool InternetGetConnectedState( out LPDWORD lpdwFlags, int dwReversed);

图片 1

率先,加多非托管函数并调用,能够拿到互连网是否联网

//声明外部的函数
[DllImport("winInet.dll ")]
private static extern bool InternetGetConnectedState(ref int flag,int dwReserved);
  • 获得计算机连网状态
  • 拿到有线网络的非复信号强度

 2. IsNetworkAlive

急需劳务System 伊夫nt
Notification的协理(系统暗中同意自动运营该服务卡塔尔国,且须要设置新型的SDK(如.NET卡塔尔国

浏览:MSDN对IsNetwork阿里ve的详细描述

由API中翻译:该意义可在Windows XP、2004(或Windows NT 4.0与Internet
Explorer 5或更加高版本)上选拔,在windows95或更加高版本上运用Internet
Explorer 5或更加高版本。所以,平日的系统都是扶持的

 获取Computer连网状态

通过IsNetworkAlive可得到当前条件是或不是曾经一而再再而三互连网。详见《C#
获取计算机的互连网连接状态》

流程:网络是或不是连接->是不是有有线网连接->获取有线网状态(确定性信号强度卡塔 尔(阿拉伯语:قطر‎->再次回到网络状态

 1 [DllImport("sensapi.dll", SetLastError = true)]
 2 private static extern bool IsNetworkAlive(out int connectionDescription);
 3 public NetworkStatus GetNetworkStatusByNetworkAlive()
 4 {
 5     var networkStatus = NetworkStatus.InternetWithError;
 6 
 7     int flags = 0;
 8     var isNetworkAlive = IsNetworkAlive(out flags);
 9 
10     int errCode = Marshal.GetLastWin32Error();
11     if (errCode != 0)
12     {
13         throw new InvalidOperationException($"通过{nameof(IsNetworkAlive)}非托管DLL,获取网络状态时,遇到异常");
14     }
15     if (isNetworkAlive)
16     {
17         // 获取WLAN网络状态
18         var wlanStatus = GetWlanStatus();
19         if (isNetworkAlive && wlanStatus == NetworkStatus.WifiWithErro)
20         {
21             networkStatus = NetworkStatus.Internet;
22         }
23         else
24         {
25             networkStatus = wlanStatus;
26         }
27     }
28     return networkStatus;
29 }

 

输出值lpdwFlags

切实品种的亲力亲为内容可链接QOCINFO
structure.aspx)

  • NETWORK_ALIVE_LAN=1 局域网(此处并不是指无线网卡塔尔国
  • NETWORK_ALIVE_WAN=2
    远程访问-拨号访谈和vpn访谈(此处而不是只有线网,按DPI所示,指的是RAS
    connections卡塔 尔(阿拉伯语:قطر‎
  • NETWORK_ALIVE_AOL=4
    无效的值。。。因为唯有Win9x系统才有此第八个采纳。参照链接

有线网络的判定:lpdwFlags对是不是无线互联网,并未直接的判断。

eg:举例小编的微管理机碰到(有线网络恐怕wifi网络卡塔尔国,获取的flag=1(局域网卡塔 尔(阿拉伯语:قطر‎

图片 2

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注