博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样使用C# 获取WIFI的连接状态?
阅读量:4035 次
发布时间:2019-05-24

本文共 1751 字,大约阅读时间需要 5 分钟。

怎样使用C# 获取WIFI的连接状态?

行文导航

  1. 思路

  2. 问题得到解决

  3. 代码展示

  4. 断开与连接WIFI状态效果

  5. 在OrangePI Linux Arm32上的测试效果

C# 获取WIFI的连接状态

本文是在知道WIFI网络设备名称的情况下,获取该设备的连接状态,同样也是可以判断是否已连接广域网。

1. 思路

起初是想着有没有那样一个直接访问设备信息,通过这个返回的信息来得到我想要的状态,查了一个资料在Linux上有个libiw,这个包能扫描到的ssid的相关信息,并不是我想要的。

那么只能从另外一个方式入手,首先取得设备的Gateway信息,然后Ping这个Gateway.IPAddress会得到Ping的结果,从这个结果来判断是否连接是否成功。

2.问题得到解决

通过思路2,查找相关的C#方面的资料,果然有相关的API, 通过NetworkInterface这个类来得到所有的网络设备信息,然后再根据条件找出我关注的网络设备,再通过Ping这个类SendPingAsync取得Ping的结果,最后由结果来判别连接状态。

3.代码展示

NetworkInterface[] nfaces = NetworkInterface.GetAllNetworkInterfaces();var nface = nfaces.First(x => x.Name == "WLAN 2");if (nface == null){    MessageBox.Show("WLAN2 - Wifi未连接.");    return;}var ipProperties = nface.GetIPProperties();// 获取默认网关var defualtGateway = ipProperties.GatewayAddresses[0];Ping ping = new Ping();var treplay = ping.SendPingAsync(defualtGateway.Address);var replay = treplay.Result;MessageBox.Show(replay?.Status == IPStatus.Success                ? $"WLAN2 - Wifi已连接. [Ping {defualtGateway.Address} Status: {replay?.Status}]"                : $"WLAN2 - Wifi未连接. [Ping {defualtGateway.Address} Status: {replay?.Status}]");

4.断开与连接WIFI状态效果

未连接状态
已连接状态

5.在OrangePI Linux Arm32上的测试效果

Microsoft (R) Build Engine version 16.7.1+52cd83677 for .NETCopyright (C) Microsoft Corporation. All rights reserved.  Determining projects to restore...  Restored /root/OrangePICallbox/WifiConnection/WifiConnection.csproj (in 1.29 sec).  WifiConnection -> /root/OrangePICallbox/WifiConnection/bin/Debug/netcoreapp3.1/WifiConnection.dllBuild succeeded.    0 Warning(s)    0 Error(s)Time Elapsed 00:00:18.64root@orangepipcplus:~/OrangePICallbox/WifiConnection# dotnet runwlan0 - Wifi已连接. [Ping 192.168.31.1 Status: Success]root@orangepipcplus:~/OrangePICallbox/WifiConnection#

转载地址:http://szudi.baihongyu.com/

你可能感兴趣的文章
c语言位域分配原则
查看>>
linux内核学习(1)第一阶段启动 解压缩内核
查看>>
grub学习(2) 加载内核
查看>>
grub学习(3) 加载initrd
查看>>
grub学习(4) 启动linux内核
查看>>
编译链接学习笔记1
查看>>
编译链接学习笔记2
查看>>
x86_64汇编语言
查看>>
慢慢欣赏linux kbuild的一些技巧
查看>>
慢慢欣赏linux kbuild如何编译c和汇编
查看>>
C对象化
查看>>
慢慢欣赏linux 生成内核镜像
查看>>
慢慢欣赏linux 内核反汇编分析
查看>>
慢慢欣赏linux 内核的重定位
查看>>
慢慢欣赏linux elf文件
查看>>
linux内核学习(3)建立页式内存映射
查看>>
linux内核学习(2)建立段式内存映射
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>