当前位置:   article > 正文

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

c# 连接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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

这里代码比较简单,就不做解释了,运行效果如下图:在这里插入图片描述
功能比较简单,就是展示所有的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();
	}	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

还是找不到xml文件,现在要做如下操作:
在这里插入图片描述
右键这些xml文件找到属性,将文件属性的生成操作改成【嵌入的资源】,在重新运行项目,这个时候无论WIIFI是否连接过,只要在代码中设置了密码都可以成功连接了!!!
这个库的还有一些其它API这里就不在赘述,可以去看看这篇文章,结束~
https://blog.csdn.net/gc_2299/article/details/128746480

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号