C#使用Simplewifi 库扫描电脑上的wifi并实现连接

SimpleWifi是什么?

Simplewifi的官网https://github.com/DigiExam/simplewifi

在C#中,SimpleWifi库是一个用于与Wi-Fi设备进行交互的库。它提供了一组易于使用的API,使开发人员能够轻松地连接到Wi-Fi网络、管理Wi-Fi连接和执行其他与Wi-Fi相关的操作。
SimpleWifi库的主要特点包括:

  1. 易于使用:该库提供了简洁的API,使得开发人员可以快速上手并开始使用。
  2. 跨平台支持:SimpleWifi库可以在不同的操作系统上运行,包括Windows、Linux和macOS。
  3. 广泛的Wi-Fi设备支持:该库支持多种Wi-Fi设备,包括路由器、适配器等。
  4. 丰富的功能:除了基本的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

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值