如何在dotnet核心中获得当前连接的WiFi SSID和信号强度?
本文关键字:SSID WiFi 信号 连接 dotnet 核心 | 更新日期: 2023-09-27 18:18:31
我知道这篇文章获取我在Windows Vista上使用c# .Net连接的无线网络的SSID它描述了如何在c#中获得ssid。但是,该库在。net core中不受支持。是否有办法获得当前连接的wifi适配器在dotnet核心的ssid和信号强度?我试过使用NetworkInterface名称空间(System.Net.NetworkInformation),这似乎至少给了我一些关于网络的诊断信息,但它肯定不包括ssid。你们怎么看?
我正在玩的代码如下。但这并没有给我我想要的。我主要是用它来探索与调试器。
var interfaces = NetworkInterface.GetAllNetworkInterfaces();
var connected = interfaces
.Where(i => i.OperationalStatus == OperationalStatus.Up)
.Where(i => i.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
.ToList();
var wifi = connected[0];
var props = wifi.GetIPProperties();
var addr = wifi.GetPhysicalAddress();
var stats = wifi.GetIPStatistics();
谢谢。
我不知道你使用的是什么。net Core版本,但以下NuGet包从微软集成到我的。net Core 3.0应用程序:
Microsoft.WindowsAPICodePack-Core version 1.1.0.2
虽然这个库相当老——它可以追溯到2014年——而且它不符合。net标准。显然,这不是跨平台的,只能在Windows上工作。它没有提供您需要的信息,但也许它是对真正解决方案的有用提示?
示例代码:
var networks = NetworkListManager.GetNetworks(NetworkConnectivityLevels.Connected);
foreach (var network in networks) {
sConnected = ((network.IsConnected == true) ? " (connected)" : " (disconnected)");
Console.WriteLine("Network : " + network.Name + " - Category : " + network.Category.ToString() + sConnected);
}
信号强度使用以下使用netsh
的PowerShell要点,您将获得信号强度:
(netsh wlan show interfaces) -Match '^'s+Signal' -Replace '^'s+Signal's+:'s+',''
在进一步的谷歌搜索之后,我偶然发现了ManagedWlan项目的Codeplex存档:
https://archive.codeplex.com/?p=managedwifi它提供了与Windows内核api的广泛互操作。我相信它也能让你找回信号强度。我已经将提供的MIT许可源代码迁移到GitHub存储库:https://github.com/cveld/ManagedWifi
它向。net Core 3.0编译,但显然不是跨平台的。