我知道该帖子获取Windows Vista上与C#.Net连接的无线网络的SSID, 它描述了如何在C#中获取ssid。但是,dotnet核心不支持该库。有没有办法获取点网核心中当前连接的wifi适配器的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();
Run Code Online (Sandbox Code Playgroud)
多谢你们。
我不知道您使用的是哪个 .NET Core 版本,但来自 MSFT 的以下 NuGet 包与我的 .NET Core 3.0 应用程序集成:
Microsoft.WindowsAPICodePack-Core version 1.1.0.2
Run Code Online (Sandbox Code Playgroud)
尽管该库相当旧(可以追溯到 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);
}
Run Code Online (Sandbox Code Playgroud)
信号强度
通过使用以下 PowerShell 要点,netsh您将获得信号强度:
(netsh wlan show interfaces) -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+',''
Run Code Online (Sandbox Code Playgroud)
经过进一步谷歌搜索后,我偶然发现了 ManagedWlan 项目的 Codeplex 存档:
https://archive.codeplex.com/?p=managementwifi
它提供了与 Windows 内核 API 的广泛互操作。我相信它还可以让您检索信号强度。我已将提供的 MIT 许可源代码迁移到 GitHub 存储库: https: //github.com/cveld/ManagedWifi
它针对 .NET Core 3.0 进行编译,但显然不是跨平台的。
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |