How do I get the available wifi APs and their signal strength in .net?

后端 未结 7 1290
我寻月下人不归
我寻月下人不归 2020-11-28 05:00

Is there any way to access all WiFi access points and their respective RSSI values using .NET? It would be really nice if I could do it without using unmanaged code or even

7条回答
  •  没有蜡笔的小新
    2020-11-28 05:10

    It is a wrapper project with managed code in c# at http://www.codeplex.com/managedwifi

    It supports Windows Vista and XP SP2 (or later version).

    sample code:

    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 );
                }
            }
        }
    }
    

提交回复
热议问题