C#获取WIFI的连接状态
C#获取WIFI的连接状态
本文是在知道WIFI网络设备名称的情况下,获取该设备的连接状态,同样也是可以判断是否已连接广域网
思路
-
起初是想着有没有那样一个直接访问设备信息,通过这个返回的信息来得到我想要的状态,查了一个资料在Linux上有个
libiw
,这个包能扫描到的ssid
的相关信息,并不是我想要的。 -
那么只能从另外一个方式入手,首先取得设备的
Gateway
信息,然后Ping
这个Gateway.IPAddress
会得到Ping
的结果,从这个结果来判断是否连接是否成功。
问题得到解决
通过思路2,查找相关的C#方面的资料,果然有相关的API
, 通过NetworkInterface这个类来得到所有的网络设备信息,然后再根据条件找出我关注的网络设备,再通过Ping这个类SendPingAsync
取得Ping
的结果,最后由结果来判别连接状态。
代码展示
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}]");
断开与连接WIFI状态效果
在OrangePI Linux Arm32上的测试效果
Microsoft (R) Build Engine version 16.7.1+52cd83677 for .NET Copyright (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.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:18.64 root@orangepipcplus:~/OrangePICallbox/WifiConnection# dotnet run wlan0 - Wifi已连接. [Ping 192.168.31.1 Status: Success] root@orangepipcplus:~/OrangePICallbox/WifiConnection#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗