如何在dotnet核心中获得当前连接的WiFi SSID和信号强度?

时间:2016-11-17 01:14:41

标签: c# .net .net-core

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

谢谢你们。

1 个答案:

答案 0 :(得分:0)

我不知道您使用的是哪个.NET Core版本,但是来自MSFT的以下NuGet软件包与我的.NET Core 3.0应用程序集成:

Microsoft.WindowsAPICodePack-Core version 1.1.0.2

尽管该库相当老-它的历史可以追溯到2014年-并且它不符合.NET Standard。显然,这不是跨平台的,仅适用于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编译,但是显然不是跨平台的。