gpt4 book ai didi

c# - 如何在 dotnet core 中获取当前连接的 WiFi SSID 和信号强度?

转载 作者:行者123 更新时间:2023-12-02 16:57:52 31 4
gpt4 key购买 nike

我知道这篇文章Get SSID of the wireless network I am connected to with C# .Net on Windows Vista它描述了如何在 C# 中获取 ssid。但是,dotnet core 不支持该库。有没有办法在 dotnet core 中获取当前连接的 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();

谢谢大家。

最佳答案

我不知道您使用的是哪个 .NET Core 版本,但来自 MSFT 的以下 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 进行编译,但显然不是跨平台的。

关于c# - 如何在 dotnet core 中获取当前连接的 WiFi SSID 和信号强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40645146/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com