title author date CreateTime categories
dotnet 枚举当前设备wifi热点
lindexi
2019-09-30 14:42:18 +0800
2019-9-30 14:19:6 +0800
dotnet

在 dotnet 程序没有现有的方法可以列举当前设备的无线网卡找到的 WIFI 热点,需要写一点代码才能使用

最简单的方法是通过命令行的方法,在命令行输入下面代码可以显示计算机上可见的网络列表

netsh wlan show networks

在我设备上运行可以找到我附近的 WIFI 热点

SSID 1 : Lindexi
Network type : 结构
身份验证 : WPA2 - 个人
加密 : CCMP SSID 2 : Lvyi
Network type : 结构
身份验证 : WPA2 - 个人
加密 : CCMP SSID 3 : 职业技术学院
Network type : 结构
身份验证 : 开放式
加密 : 无

也就是通过命令行方式调用,然后解析命令行就可以列举设备能连接的 WIFI 热点

另一个方法是通过本机代码

网上找到调用 wlanapi.dll 的方法,调用了方法可以拿到当前设备能访问的 WIFI 列表

这里的代码都是调用 win32 方法,我将代码放在 github 请复制 WlanApi.csInterop.cs 到你的项目,然后使用下面代码就可以显示当前能连接的网络

        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); if (networks.Length > 0)
{
Console.WriteLine($"找到{networks.Length}热点");
foreach (Wlan.WlanAvailableNetwork network in networks)
{
Console.WriteLine($"WIFI {GetStringForSSID(network.dot11Ssid)}.");
} Console.WriteLine();
}
}
} /// <summary>
/// Converts a 802.11 SSID to a string.
/// </summary>
private static string GetStringForSSID(Wlan.Dot11Ssid ssid)
{
return Encoding.UTF8.GetString(ssid.SSID, 0, (int) ssid.SSIDLength);
}

当然,复制代码的方法是很逗比的,早就有大佬做出了 NuGet 库,请安装 SimpleWifi 这个库,然后使用下面代码就可以输出

        static void Main(string[] args)
{
var wlanClient = new WlanClient();
foreach (var wlanClientInterface in wlanClient.Interfaces)
{
foreach (var wlanAvailableNetwork in wlanClientInterface.GetAvailableNetworkList(WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles))
{
Console.WriteLine($"WIFI {GetStringForSSID(wlanAvailableNetwork.dot11Ssid)}.");
}
}
} /// <summary>
/// Converts a 802.11 SSID to a string.
/// </summary>
private static string GetStringForSSID(Dot11Ssid ssid)
{
return Encoding.UTF8.GetString(ssid.SSID, 0, (int) ssid.SSIDLength);
}

使用库的代码也放在 github 欢迎小伙伴下载

是不是看的代码和复制大佬写的代码的差不多,其实这个库的代码基本和刚才复制代码的一样,如果想要使用刚才复制代码的库,可以安装 managedwifi 库,此时的显示可以访问的周围的网络的代码和刚才复制代码的相同

修改的代码也放在 github 欢迎小伙伴下载

在 UWP 有框架的方法访问 WIFI 请看 WiFiAdapter Class (Windows.Devices.WiFi) - Windows UWP applications 使用方法请看 Windows-universal-samples/Samples/WiFiScan 但是 Win32 如果不打包 UWP 不能调上面方法

查询已连接 Wi-Fi 的密码(入门和进阶两种方法) - walterlv

2019-9-30-dotnet-枚举当前设备wifi热点的更多相关文章

  1. Android WiFi开发教程(三)——WiFi热点数据传输

    在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)——WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...

  2. MFC枚举USB设备碰到的一个疑难,还没解决

    代码如下: 打开USB Hub设备之后,返回句柄hHubDevice,然后使用EnumerateHubPorts来枚举Hub的端 口.疑问在代码的中文注释中. bool CUsbEnumHub::En ...

  3. C#枚举硬件设备(升级版)

    原文:C#枚举硬件设备(升级版) 先取设备类型: ; } }

  4. 2019.3.28&2019.3.30考试

    2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...

  5. Alpha冲刺(7/10)——2019.4.30

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(7/10)--2019.4.30 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  6. Android 开发 创建WiFi、WiFi热点 ---开发集合

    WIFI 权限 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> < ...

  7. Android WiFi/WiFi热点开发总结

    首先看一下WiFi的自我介绍: Wi-Fi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段.连接到无线局域网通常是有密码保护的:但也可 ...

  8. Linux创建WiFi热点

    手机流量用完,需要开WiFi,由于是LinuxMint,感觉配置还算容易,找到一个不错的教程,收藏一下,以备后用.除了修改配置文件那步在我的电脑不需要外其他基本正确,而且Mint本来就衍生自Ubunt ...

  9. Linux:Ubuntu16.04下创建Wifi热点

    Linux:Ubuntu16.04下创建Wifi热点 说明: 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章转载自编程人生 具体步骤如下: 1.  ...

  10. 【树莓派】【转】将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)

    下文为转载,文章转自:http://wangye.org/blog/archives/845/,仅供本次学习实践参考. 最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就 ...

随机推荐

  1. BugkuCTF-游戏过关

    首先将exe文件下载下来,打开看一下: 玩游戏 n是灯的序列号,m是灯的状态 如果第n盏灯的m是1,它就开,如果不是,它就关 起初所有的灯都关上了 现在你可以输入n来改变它的状态 但是你应该注意一件事 ...

  2. 记录--三分钟打造自己专属的uni-app工具箱

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 可曾想过我们每次创建新项目,或者换地方写程序,都要把之前写过的工具类找出来又要复制粘贴一遍有些麻烦,尤其是写uni-app自定义模板 ...

  3. 探索华为云CCE敏捷版金融级高可用方案实践案例

    本文分享自华为云社区<华为云CCE敏捷版金融级高可用方案实践>,作者: 云容器大未来. 一.背景 1.1. CCE 敏捷版介绍 云原生技术有利于各组织在公有云.私有云和混合云等新型动态环境 ...

  4. KingbaseES V8R6 运维案例 --ksql访问动态库问题

    KingbaseES V8R6数据库运维案例之---ksql访问动态库问题 案例说明: CentOS环境下,在安装和初始化数据库实例后,启动数据库服务,通过ksql连接访问时出现以下故障: 经检查,是 ...

  5. 鸿蒙HarmonyOS实战-ArkUI组件(List)

    一.List 1.概述 列表是一种非常有用且功能强大的容器,它常用于呈现同类型或多类型数据集合,例如图片.文本.音乐.通讯录.购物清单等.列表对于显示大量内容而不耗费过多空间和内存是非常有帮助的,因为 ...

  6. 软件发布版本号命名风格(GUN)

    GUN风格: (1)产品初版时,版本号可以为0.1或0.1.0,也可以为1.0或1.0.0: (2)当产品进行了局部修改或bug修正时,主版本号和子版本号都不变,修正版本号+1: (3)当产品在原有的 ...

  7. 6 CSS样式继承

    6 样式继承 CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素.总的来说,一个HTML文档就是一个家族,然后html元素有两个子元素,相当于它的儿子,分别是head和body,然后body ...

  8. Docker 解决 `denied: requested access to the resource is denied`

    背景 由于不可描述的原因,相对于以前,最近在更加频繁的迁移服务器,简单的 Shell 脚本已经不能满足需求了,于是将所有的项目 Docker 化. 部分不含敏感配置的项目准备放到 DockerHub ...

  9. OpenHarmony社区运营报告(2022年11月)

    本月快讯 • 11月24日,第二十届中日韩三国IT局长OSS会议暨东北亚开源软件推进论坛以在线形式成功召开.经审核评选认定,OpenAtom OpenHarmony(以下简称"OpenHar ...

  10. dev DEV控件:gridControl常用属性设置

    引用:https://www.cnblogs.com/kingsliu/articles/6145679.html 1.隐藏最上面的GroupPanelgridView1.OptionsView.Sh ...