C# 使用托管 Wifi API 连接到 Wifi 网络

Posted

技术标签:

【中文标题】C# 使用托管 Wifi API 连接到 Wifi 网络【英文标题】:C# Connect to Wifi Network with Managed Wifi API 【发布时间】:2014-11-06 15:39:30 【问题描述】:

我想知道是否可以使用 Managed Wifi API 连接到 wifi 网络?

【问题讨论】:

【参考方案1】:

基本上是的。

也许您应该花几分钟时间进行搜索。来自Managed Wifi API codeplex page:

该库使用本机 Wifi API,...

所以转到 Native Wifi API:MSDN

连接或断开无线网络。请参阅 WlanConnect 和 WlanDisconnect。

此外,在 Managed Wifi API WlanApi.cs 的源代码中:

/// <summary>
/// Requests a connection (association) to the specified wireless network.
/// </summary>
/// <remarks>
/// The method returns immediately. Progress is reported through the <see cref="WlanNotification"/> event.
/// </remarks>
public void Connect(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, string profile)

    Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
    connectionParams.wlanConnectionMode = connectionMode;
    connectionParams.profile = profile;
    connectionParams.dot11BssType = bssType;
    connectionParams.flags = 0;
    Connect(connectionParams);

网站的独特样本正在这样做! Sample

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 );
        foreach ( Wlan.WlanAvailableNetwork network in networks )
        
            if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
            
                Console.WriteLine( "Found WEP network with SSID 0.", GetStringForSSID(network.dot11Ssid));
            
        

        // Retrieves XML configurations of existing profiles.
        // This can assist you in constructing your own XML configuration
        // (that is, it will give you an example to follow).
        foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() )
        
            string name = profileInfo.profileName; // this is typically the network's SSID
            string xml = wlanIface.GetProfileXml( profileInfo.profileName );
        

        // Connects to a known network with WEP security
        string profileName = "Cheesecake"; // this is also the SSID
        string mac = "52544131303235572D454137443638";
        string key = "hello";
        string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>0</name><SSIDConfig><SSID><hex>1</hex><name>0</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>2</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
        wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
        wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
    

祝你有美好的一天!

【讨论】:

鉴于我的机器有多个 wifi 键盘,是否可以指定我可以使用哪个网络接口进行连接?【参考方案2】:

Windows 10 中有 API 可以做到这一点。

见WiFiAdapter class on MSDN和一些sample code on GitHub

我看到托管 API 的好处是您不必创建 XML 配置文件来连接到新网络。实际上,您只需输入密码即可连接到网络。

【讨论】:

感谢 iot 示例的链接。

以上是关于C# 使用托管 Wifi API 连接到 Wifi 网络的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QT 或 windows API 中连接到无线 WIFI 网络? [关闭]

在设备配置 Android MGMT API 期间自动设置 WiFi

让 ESP32 连接到你的 WiFi 热点

如何使用 Python 模块 wpa_supplicant 连接到安全 WiFi?

使用 Nodejs Restful API 将 android 应用程序连接到本地 mongoDB 数据库并将数据存储在 Mongodb 中(通过 WiFi)

如何获取 wifi AP 列表并从 Windows 商店应用程序连接到一个 AP