如何在 .net 中获取可用的 wifi AP 及其信号强度?

2024-02-29

有没有办法使用.NET 访问所有 WiFi 接入点及其各自的 RSSI 值?如果我可以在不使用非托管代码的情况下完成它,那就太好了,或者如果它可以在 Mono 和 .NET 中工作,那就更好了。

如果可能的话,我将不胜感激代码示例。 谢谢


以下是我发现的一些类似的 stackoverflow 问题:

-获取我在 Windows Vista 上使用 C# .Net 连接到的无线网络的 SSID https://stackoverflow.com/questions/431755/get-ssid-of-the-wireless-network-i-am-connected-to-with-c-net-on-windows-vista

-在 C# 中管理无线网络连接 https://stackoverflow.com/questions/285665/managing-wireless-network-connection-in-c

-从 C# 获取无线接入点的 BSSID(MAC 地址) https://stackoverflow.com/questions/187777/get-bssid-mac-address-of-wireless-access-point-from-c


它是一个包装项目,其中包含 C# 中的托管代码,位于http://www.codeplex.com/managementwifi http://www.codeplex.com/managedwifi

它支持Windows Vista和XP SP2(或更高版本)。

示例代码:

using NativeWifi;
using System;
using System.Text;

namespace WifiExample
{
    class Program
    {
        /// <summary>
        /// Converts a 802.11 SSID to a string.
        /// </summary>
        static string GetStringForSSID(Wlan.Dot11Ssid ssid)
        {
            return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength );
        }

        static void Main( string[] args )
        {
            WlanClient client = new WlanClient();
            foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
            {
                // Lists all networks with WEP security
                Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
                foreach ( Wlan.WlanAvailableNetwork network in networks )
                {
                    if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
                    {
                        Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
                    }
                }

                // Retrieves XML configurations of existing profiles.
                // This can assist you in constructing your own XML configuration
                // (that is, it will give you an example to follow).
                foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() )
                {
                    string name = profileInfo.profileName; // this is typically the network's SSID

                    string xml = wlanIface.GetProfileXml( profileInfo.profileName );
                }

                // Connects to a known network with WEP security
                string profileName = "Cheesecake"; // this is also the SSID
                string mac = "52544131303235572D454137443638";
                string key = "hello";
                string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);

                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 .net 中获取可用的 wifi AP 及其信号强度? 的相关文章

随机推荐

  • Asp net core Blazor Auth0 异常:OpenIdConnectAuthenticationHandler:message.State 为 null 或为空

    我正在使用 Blazor 服务器端和 Auth0 来处理我的应用程序的登录 我可以正常进入登录屏幕 但是当我单击 确定 使用正确的凭据登录时 我得到以下信息 Exception OpenIdConnectAuthenticationHand
  • mongo 哪个更好?将子项放入数组或多个字段中

    我有一个 MongoDB 作为多个独立 SQL 数据库和 API 的整合中间层运行 这些 SQL 数据库共享相似的 Article 表 但结构不同 鉴于一篇文章将属于多个类别和子类别 最多不超过4层 结果我们有两种模式设计 categori
  • MS SQL 中文排序规则

    我在我们的亚洲市场生产数据库中发现了奇怪的行为 在中文字母的情况下 条件并不像人们所期望的那样工作 create table Temp TextContent nvarchar 20 ChineseType varchar 10 inser
  • 相同的命令在不同的设备上输出不同的值

    我有两个树莓派 3 当我做 tfenv pi raspberrypi pip install opencv python 在第一个 Raspberry Pi 上 我得到 Collecting opencv python Could not
  • 增加空指针的定义是否明确?

    在进行指针算术时 有很多未定义 未指定行为的示例 指针必须指向同一数组内部 或超出末尾的一个 或同一对象内部 限制何时可以基于上述内容进行比较 操作 ETC 以下操作定义明确吗 int p 0 p 5 2 6 1 通过添加来修改操作数对象的
  • 切换到 VS 2010 后,编译的程序运行速度变慢了

    我们的关键公司应用程序 C 处理高分辨率图像 我们付出了巨大的努力来优化它 它在约 2 5 秒内执行超过 250 万次操作 我们已经使用 VS 2005 多年 上周 我们将所有内容都转移到了 VS 2010 完全相同的项目代码 现在 当我构
  • 如何在 WP7 中访问播客?

    如何访问手机上的播客列表并在 WP7 中播放它们 Thanks 目前无法查询播客 流派不会告诉您正在使用的内容是否是播客 MediaLibrary 将仅访问常规歌曲 而不是其他内容 希望 Mango 更新能够为媒体访问 API 带来一些扩展
  • 匹配第一个和最后一个字符的正则表达式

    我正在尝试使用正则表达式来检查字符串中的第一个和最后一个字符是否是 a z 之间的字母字符 我知道这与第一个字符匹配 a z i 但是我如何检查最后一个字符呢 This a z a z i 不起作用 我怀疑这两个子句之间应该有一些东西 但我
  • MIPS汇编将整数转换为二进制并读取1的数量?

    我正在开发一个程序 它从用户那里获取一个整数 然后输出它的二进制等价物中有多少个 1 所以首先我认为我需要将其转换为二进制 然后使用循环检查所有 32 位以找出有多少个 1 我已经浏览了几个小时并尝试不同的方法来首先将整数转换为二进制 最好
  • 如何使用 React DatePicker 选择时间

    我在用着反应日期选择器 https github com Hacker0x01 react datepicker我还需要包括选择日期的时间 我没有从文档中找到任何如何实现这一点的示例 DatePicker 是否提供了任何开箱即用的功能 还是
  • 从批处理文件执行存储过程

    如何从批处理文件执行 SQL Server 中的存储过程 使用 Windows 身份验证 如果您使用的是 Sql Server 2005 则可以使用sqlcmd http msdn microsoft com en us library m
  • SwiftUI 简化许多文本字段的 .onChange 修饰符

    我正在寻找一种方法来简化 重构 SwiftUI 中添加 onChange of 具有许多文本字段的视图 如果解决方案简洁 我也会移动修饰符 更接近适当的字段 而不是位于 ScrollView 的末尾 在这个 在这种情况下 所有 onChan
  • NuxtJS 上的 ESLint 和 Prettier 冲突

    当我创建一个新的 Nuxt js 项目时 我遇到了 ESLint 和 Prettier 的一个非常令人筋疲力尽的问题 如果我节省这个 vue文件中 Prettier 尝试修复它 但 ESLint 阻止它这样做 所以 我无法删除这方面的错误
  • 拖动进入时突出显示按钮

    刚刚开始探索iOS SDK 我有一些按钮 需要突出显示它们 触摸一次然后拖动 据我了解 当您单击按钮然后拖动到外部然后再次拖动到内部时 会触发 TouchDragEnter 事件 当您单击按钮外部然后拖动到内部时 是否会触发任何事件 亚历山
  • 数据注释、IDataErrorInfo 和 MVVM

    我正在尝试找到验证 MVVM 中数据的最佳方法 目前 我正在尝试使用 MVVM 模式将 IDataErrorInfo 与数据注释结合使用 然而 似乎没有任何作用 我不确定我可能做错了什么 我有这样的东西 Model public class
  • 使用 numpy/scipy 的快速 B 样条算法

    我需要在 python 中计算 bspline 曲线 我研究了 scipy interpolate splprep 和其他一些 scipy 模块 但找不到任何可以轻松满足我需要的东西 所以我在下面编写了自己的模块 代码运行良好 但速度很慢
  • 如何保护 web.config 中存储的密码的安全?

    我在 web config 文件中添加了以下设置 以启动对外部系统的 API 调用 因此 我存储 API URL 用户名 密码 如下所示
  • 包含 MySQL 查询结果中未找到的值

    我有以下 MySQL 表 tbl pet owners id name pet city date adopted 1 jane cat Boston 2017 07 11 2 jane dog Boston 2017 07 11 3 ja
  • cygwin中如何杀死进程?

    您好 我有以下无法杀死的进程 我在 windows xp 32 位中运行 cygwin 我尝试发出以下命令 bin kill f 4760 bin kill 9 5000 kill 9 5000 kill 5000 当我写 bin kill
  • 如何在 .net 中获取可用的 wifi AP 及其信号强度?

    有没有办法使用 NET 访问所有 WiFi 接入点及其各自的 RSSI 值 如果我可以在不使用非托管代码的情况下完成它 那就太好了 或者如果它可以在 Mono 和 NET 中工作 那就更好了 如果可能的话 我将不胜感激代码示例 谢谢 以下是