SimpleWifi是什么?
Simplewifi的官网:https://github.com/DigiExam/simplewifi
在C#中,SimpleWifi库是一个用于与Wi-Fi设备进行交互的库。它提供了一组易于使用的API,使开发人员能够轻松地连接到Wi-Fi网络、管理Wi-Fi连接和执行其他与Wi-Fi相关的操作。
SimpleWifi库的主要特点包括:
- 易于使用:该库提供了简洁的API,使得开发人员可以快速上手并开始使用。
- 跨平台支持:SimpleWifi库可以在不同的操作系统上运行,包括Windows、Linux和macOS。
- 广泛的Wi-Fi设备支持:该库支持多种Wi-Fi设备,包括路由器、适配器等。
- 丰富的功能:除了基本的Wi-Fi连接和断开功能外,SimpleWifi库还支持管理Wi-Fi配置、扫描Wi-Fi网络等。
第一步:引入SimpleWifi库
要开始使用SimpleWifi库,首先需要安装相应的NuGet包。你可以通过NuGet包管理器来安装SimpleWifi库。在Visual Studio中,打开“工具”菜单,选择“NuGet包管理器”,然后选择“管理解决方案的NuGet包”。在打开的窗口中搜索“SimpleWifi”,并安装相应的包,如下图所示:
第二步:简单使用:
安装完成后,你可以在你的C#项目中引入SimpleWifi库,并开始使用它。以下是一个简单的示例,演示如何使用SimpleWifi库连接到Wi-Fi网络:
namespace WifiApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 获取WIFI列表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GetWifiList_Click(object sender, EventArgs e)
{
textBox1.Text = "";
// 实例化WIFI
Wifi wifi = new Wifi();
// WIFI状态变化监听
wifi.ConnectionStatusChanged += Wifi_ConnectionStatusChanged;
// 获取所有WIFI列表,遍历找到
wifi.GetAccessPoints().ForEach(item =>
{
// 获取所有的WIFI
textBox1.Text += $"WIFI:{item.Name}\r\n";
// 根据名称找到想要连接的WIFI
if (item.Name.Contains("ZhuJi"))
{
AuthRequest authRequest = new AuthRequest(item);
// WIFI密码
authRequest.Password = "12345678";
// 异步连接
// item.ConnectAsync(authRequest);
// 同步
bool result = item.Connect(authRequest);
// 打印连接结果
Console.WriteLine("Connect:"+result);
}
});
}
/// <summary>
/// WIFI状态变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Wifi_ConnectionStatusChanged(object sender, WifiStatusEventArgs e)
{
Console.WriteLine("Status:"+e.NewStatus);
}
}
}
这里代码比较简单,就不做解释了,运行效果如下图:
功能比较简单,就是展示所有的WIFI列表,并自动连接名称ZhuJi-004的WIFI,到这里基本上就结束了。
但是按照这个步骤使用的会有一个问题,就是不需要密码的WIFI以及之前输入过密码的WIFI可以连接成功,第一次连接或者忘记了密码的WIFI连接的时候会报错,错误如下:这里简单解释错误原因:就是连接WIFI时会写入一个xml格式的配置文件,在获取本地的xml格式配置文件的时候没有找到,所以报错了。
第三步:System.ArgumentNullException的解决办法
解决办法就是不要使用NuGet包,自己去官网下载代码库导入到项目中进行编译。
1.导入Simplewifi库
如果安装了NuGet包先卸载了,然后去官网下载Simplewifi库到本地,然后打开项目点击右键引用—>添加引用—>找到simlplewifi添加进来即可,现在运行连接WIFI大概率还是会报错。
2.解决空指针的问题
错误代码如下:
private static string GetTemplate(string name)
{
string resourceName = string.Format("SimpleWifi.ProfileXML.{0}.xml", name);
// Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)
// 报错的还是原因无法找到xml,返回一个空对象。
using (StreamReader reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)))
{
return reader.ReadToEnd();
}
}
还是找不到xml文件,现在要做如下操作:
右键这些xml文件找到属性,将文件属性的生成操作改成【嵌入的资源】,在重新运行项目,这个时候无论WIIFI是否连接过,只要在代码中设置了密码都可以成功连接了!!!
这个库的还有一些其它API这里就不在赘述,可以去看看这篇文章,结束~
https://blog.csdn.net/gc_2299/article/details/128746480