当前位置:  开发笔记 > 编程语言 > 正文

如何在.net中获取可用的WiFi AP及其信号强度?

如何解决《如何在.net中获取可用的WiFiAP及其信号强度?》经验,为你挑选了1个好方法。

有没有办法使用.NET访问所有WiFi接入点及其各自的RSSI值?如果我可以在不使用非托管代码的情况下完成它,那将是非常好的,如果它在单声道和.NET中工作,那将更好.

如果有可能我会申请代码样本.谢谢


以下是我发现的一些类似的stackoverflow问题:

- 在Windows Vista上获取我使用C#.Net连接的无线网络的SSID

- 在C#中管理无线网络连接

- 从C#获取无线接入点的BSSID(MAC地址)



1> Jirapong..:

它是一个包装项目,在c#中提供托管代码,网址为http://www.codeplex.com/managedwifi

它支持Windows Vista和XP SP2(或更高版本).

示例代码:

using NativeWifi;
using System;
using System.Text;

namespace WifiExample
{
    class Program
    {
        /// 
        /// Converts a 802.11 SSID to a string.
        /// 
        static string GetStringForSSID(Wlan.Dot11Ssid ssid)
        {
            return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength );
        }

        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("{0}{1}{0}ESSopenWEPfalsenetworkKeyfalse{2}0", profileName, mac, key);

                wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
                wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
            }
        }
    }
}

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有