1. 程式人生 > 其它 >連線狀態_怎樣使用C# 獲取WIFI的連線狀態?

連線狀態_怎樣使用C# 獲取WIFI的連線狀態?

技術標籤:連線狀態

61ea8f0763782b9bce4fa7bae778169a.gif

4c12456deb01c56f24e5b4c7c1478a0d.png

怎樣使用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();
varnface=nfaces.First(x=>x.Name=="WLAN2");
if(nface==null)
{
MessageBox.Show("WLAN2-Wifi未連線.");
return;
}
varipProperties=nface.GetIPProperties();
//獲取預設閘道器
vardefualtGateway=ipProperties.GatewayAddresses[0];
Pingping=newPing();
vartreplay=ping.SendPingAsync(defualtGateway.Address);
varreplay=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狀態效果

b6db7c757c3d9dc6bf2223a1d385aa6e.png
未連線狀態
94518997ec623e6f274522e385cd739e.png
已連線狀態

5.在OrangePI Linux Arm32上的測試效果

Microsoft(R)BuildEngineversion16.7.1+52cd83677for.NETCopyright(C)MicrosoftCorporation.Allrightsreserved.
Determiningprojectstorestore...
Restored/root/OrangePICallbox/WifiConnection/WifiConnection.csproj(in1.29sec).
WifiConnection->/root/OrangePICallbox/WifiConnection/bin/Debug/netcoreapp3.1/WifiConnection.dll
Buildsucceeded.
0Warning(s)
0Error(s)
TimeElapsed00:00:18.64
[email protected]:~/OrangePICallbox/WifiConnection#dotnetrun
wlan0-Wifi已連線.[Ping192.168.31.1Status:Success]
[email protected]:~/OrangePICallbox/WifiConnection#

一些推薦

  1. 【Blazor 開源控制元件庫】點選瀏覽

  2. 【B/S 開源專案】點選瀏覽

  3. 【WPF 開源控制元件庫】點選瀏覽

  4. 【WPF 開源專案】點選瀏覽

  5. 【Xamarin 開源專案】點選瀏覽

  6. 【Winform 開源控制元件庫】點選瀏覽

  7. 【Winform 開源專案】點選瀏覽

  8. 【Qt 開源控制元件庫】點選瀏覽

  9. 【Qt 開源專案】點選瀏覽

  10. 【更多分享】點選瀏覽


資源分享

  • 回覆數字【01】:獲取DotNet技術資料
  • 回覆數字【02】:獲取Java技術資料
  • 回覆數字【03】:獲取Android技術資料
  • 回覆數字【04】:獲取C++技術資料
  • 回覆數字【05】:獲取Qt技術資料
  • 回覆數字【06】:獲取React資源
  • 新增號主微訊號【dotnet9】:備註【入群】加入與大佬們的技術交流
  • 新增QQ群【771992300】:備註【Dotnet9】加入技術交流,無人數上限、有資源共享

時間如流水,只能流去不流回。

  • 公眾號:Dotnet9
  • 號主微訊號:dotnet9
  • 作者:非法關鍵字
  • 原文:C#獲取WIFI的連線狀態
  • 編輯:沙漠之盡頭的狼
  • 日期:2020-12-25
8eba1e3a5ccc15b3114feb906895293a.png
微信公眾號:Dotnet9