编辑
2025-10-15
C#
00

目录

环境准备
基础使用
初始化WiFi客户端
获取可用网络列表
连接到WiFi网络
断开当前网络
高级功能实现
WiFi信号监控器
网络配置管理器
完整应用示例
5. 使用示例
总结

SimpleWifi 是一个优秀的C#开发库,用于简化WiFi网络的管理操作。本文将详细介绍其使用方法和实际应用场景。

环境准备

首先需要通过NuGet安装SimpleWifi包:

Bash
Install-Package SimpleWifi.netstandard.Lsh

image.png

基础使用

初始化WiFi客户端

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SimpleWifi; namespace AppSimpleWifi { public class WifiManager { private Wifi wifi; public WifiManager() { // 初始化WiFi对象 wifi = new Wifi(); // 注册状态变化事件 wifi.ConnectionStatusChanged += Wifi_ConnectionStatusChanged; } // WiFi状态变化事件处理 private void Wifi_ConnectionStatusChanged(object sender, WifiStatusEventArgs e) { Console.WriteLine($"WiFi状态发生变化: {e.NewStatus}"); } } }

image.png

获取可用网络列表

C#
/// <summary> /// 扫描并获取所有可用的WiFi网络 /// </summary> public List<AccessPoint> ScanNetworks() { try { // 获取所有可用的接入点 var accessPoints = wifi.GetAccessPoints(); Console.WriteLine($"找到 {accessPoints.Count} 个WiFi网络:"); foreach (var ap in accessPoints) { Console.WriteLine($"SSID: {ap.Name}"); Console.WriteLine($"信号强度: {ap.SignalStrength}%"); Console.WriteLine($"是否加密: {ap.IsSecure}"); Console.WriteLine("------------------------"); } return accessPoints.ToList(); } catch (Exception ex) { Console.WriteLine($"扫描网络时出错: {ex.Message}"); return new List<AccessPoint>(); } }

image.png

连接到WiFi网络

C#
/// <summary> /// 连接到指定的WiFi网络 /// </summary> /// <param name="ssid">网络名称</param> /// <param name="password">网络密码</param> /// <returns>连接结果</returns> public async Task<bool> ConnectToNetwork(string ssid, string password) { try { // 获取所有接入点 var accessPoints = wifi.GetAccessPoints(); // 查找指定的网络 var targetNetwork = accessPoints.FirstOrDefault(ap => ap.Name == ssid); if (targetNetwork == null) { Console.WriteLine($"未找到网络: {ssid}"); return false; } // 创建认证信息 AuthRequest authRequest = new AuthRequest(targetNetwork); // 设置密码 authRequest.Password = password; // 尝试连接 bool connected = targetNetwork.Connect(authRequest); if (connected) { Console.WriteLine($"成功连接到 {ssid}"); } else { Console.WriteLine($"连接到 {ssid} 失败"); } return connected; } catch (Exception ex) { Console.WriteLine($"连接过程中出错: {ex.Message}"); return false; } }

image.png

断开当前网络

C#
/// <summary> /// 断开当前WiFi连接 /// </summary> public void DisconnectNetwork() { try { if (wifi.ConnectionStatus == WifiStatus.Connected) { wifi.Disconnect(); Console.WriteLine("已断开WiFi连接"); } else { Console.WriteLine("当前没有活动的WiFi连接"); } } catch (Exception ex) { Console.WriteLine($"断开连接时出错: {ex.Message}"); } }

高级功能实现

WiFi信号监控器

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SimpleWifi; namespace AppSimpleWifi { public class WifiMonitor { private Wifi wifi; private Timer monitorTimer; public WifiMonitor() { wifi = new Wifi(); // 创建定时器,每5秒检查一次信号强度 monitorTimer = new Timer(MonitorSignalStrength, null, 0, 5000); } /// <summary> /// 监控当前连接的WiFi信号强度 /// </summary> private void MonitorSignalStrength(object state) { try { if (wifi.ConnectionStatus == WifiStatus.Connected) { var currentNetwork = wifi.GetAccessPoints() .FirstOrDefault(ap => ap.IsConnected); if (currentNetwork != null) { Console.WriteLine($"当前网络: {currentNetwork.Name}"); Console.WriteLine($"信号强度: {currentNetwork.SignalStrength}%"); // 信号强度过低时发出警告 if (currentNetwork.SignalStrength < 30) { Console.WriteLine("警告:WiFi信号较弱!"); } } } } catch (Exception ex) { Console.WriteLine($"监控信号强度时出错: {ex.Message}"); } } public void Dispose() { monitorTimer?.Dispose(); } } }

image.png

网络配置管理器

C#
/// <summary> /// 保存网络配置 /// </summary> public void SaveNetworkProfile(string ssid, string password) { try { var accessPoint = wifi.GetAccessPoints() .FirstOrDefault(ap => ap.Name == ssid); if (accessPoint != null) { var authRequest = new AuthRequest(accessPoint); authRequest.Password = password; accessPoint.Connect(authRequest); Console.WriteLine($"已保存网络配置: {ssid}"); } } catch (Exception ex) { Console.WriteLine($"保存网络配置时出错: {ex.Message}"); } }

完整应用示例

下面是一个综合性的WiFi管理器示例:

C#
public class CompleteWifiManager : IDisposable { private readonly Wifi wifi; private readonly Timer statusCheckTimer; public CompleteWifiManager() { wifi = new Wifi(); // 每10秒检查一次WiFi状态 statusCheckTimer = new Timer(CheckWifiStatus, null, 0, 10000); // 注册事件 wifi.ConnectionStatusChanged += Wifi_ConnectionStatusChanged; } /// <summary> /// 获取WiFi适配器状态 /// </summary> public bool IsWifiEnabled() { return wifi.ConnectionStatus != WifiStatus.Unavailable; } /// <summary> /// 扫描并获取可用网络 /// </summary> public List<NetworkInfo> GetAvailableNetworks() { var networks = wifi.GetAccessPoints() .Select(ap => new NetworkInfo { SSID = ap.Name, SignalStrength = ap.SignalStrength, IsSecure = ap.IsSecure, IsConnected = ap.IsConnected }) .ToList(); return networks; } /// <summary> /// 连接到指定网络 /// </summary> public async Task<bool> ConnectToNetwork(string ssid, string password, bool saveProfile = false) { try { var accessPoint = wifi.GetAccessPoints() .FirstOrDefault(ap => ap.Name == ssid); if (accessPoint == null) return false; var authRequest = new AuthRequest(accessPoint) { Password = password, SavePassword = saveProfile }; return accessPoint.Connect(authRequest); } catch (Exception ex) { Console.WriteLine($"连接网络时出错: {ex.Message}"); return false; } } /// <summary> /// 获取当前连接的网络信息 /// </summary> public NetworkInfo GetCurrentNetwork() { var connectedAp = wifi.GetAccessPoints() .FirstOrDefault(ap => ap.IsConnected); if (connectedAp == null) return null; return new NetworkInfo { SSID = connectedAp.Name, SignalStrength = connectedAp.SignalStrength, IsSecure = connectedAp.IsSecure, IsConnected = true }; } private void CheckWifiStatus(object state) { try { var currentNetwork = GetCurrentNetwork(); if (currentNetwork != null) { Console.WriteLine($"当前网络状态:"); Console.WriteLine($"SSID: {currentNetwork.SSID}"); Console.WriteLine($"信号强度: {currentNetwork.SignalStrength}%"); } } catch (Exception ex) { Console.WriteLine($"检查WiFi状态时出错: {ex.Message}"); } } private void Wifi_ConnectionStatusChanged(object sender, WifiStatusEventArgs e) { Console.WriteLine($"WiFi连接状态变更: {e.NewStatus}"); } public void Dispose() { statusCheckTimer?.Dispose(); wifi?.Dispose(); } } /// <summary> /// 网络信息数据模型 /// </summary> public class NetworkInfo { public string SSID { get; set; } public int SignalStrength { get; set; } public bool IsSecure { get; set; } public bool IsConnected { get; set; } }

5. 使用示例

C#
class Program { static async Task Main(string[] args) { using (var wifiManager = new CompleteWifiManager()) { // 检查WiFi是否可用 if (!wifiManager.IsWifiEnabled()) { Console.WriteLine("WiFi适配器不可用"); return; } // 获取可用网络列表 var networks = wifiManager.GetAvailableNetworks(); Console.WriteLine("可用网络:"); foreach (var network in networks) { Console.WriteLine($"SSID: {network.SSID}, 信号强度: {network.SignalStrength}%"); } // 连接到指定网络 Console.WriteLine("请输入要连接的网络名称:"); string ssid = Console.ReadLine(); Console.WriteLine("请输入密码:"); string password = Console.ReadLine(); bool connected = await wifiManager.ConnectToNetwork(ssid, password, true); if (connected) { Console.WriteLine("连接成功!"); // 显示当前网络信息 var currentNetwork = wifiManager.GetCurrentNetwork(); Console.WriteLine($"当前连接到: {currentNetwork.SSID}"); Console.WriteLine($"信号强度: {currentNetwork.SignalStrength}%"); } else { Console.WriteLine("连接失败!"); } Console.WriteLine("按任意键退出..."); Console.ReadKey(); } } }

总结

SimpleWifi提供了一个简单而强大的接口来管理Windows环境下的WiFi网络。通过本文的示例代码,您可以实现:

  • WiFi网络扫描
  • 网络连接管理
  • 信号强度监控
  • 配置文件管理
  • 状态监控和事件处理

这些功能可以用来构建各种网络管理工具,如WiFi分析器、网络监控工具等。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!