怎样使用C# 获取WIFI的连接状态?
生活随笔
收集整理的這篇文章主要介紹了
怎样使用C# 获取WIFI的连接状态?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
怎樣使用C# 獲取WIFI的連接狀態?
行文導航
思路
問題得到解決
代碼展示
斷開與連接WIFI狀態效果
在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?.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.dllBuild?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#總結
以上是生活随笔為你收集整理的怎样使用C# 获取WIFI的连接状态?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生态和能力是国内自研操作系统发展的关键
- 下一篇: 如何使用 C# 在异步代码中处理异常