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 better if it worked in mono as well as .NET.
If it is possible i would appriciate a code sample. Thanks
Here are a few similiar stackoverflow questions i found:
-Get SSID of the wireless network I am connected to with C# .Net on Windows Vista
-Managing wireless network connection in C#
-Get BSSID (MAC address) of wireless access point from C#
In Windows, go to Network and Internet, and then Network and Sharing Center. Select the blue WiFi link to see the signal strength. On an Android phone or tablet. Look under Settings, WiFi, or Network, and search for a gear or WiFi icon next to the network you're connected to.
On Android, download the Wi-Fi Speed Test app. It's a favourite of ours because it's also a handy way to test the connection speed between your phone and your router, not your broadband speed. However, here it's useful because it reports signal strength.
Checking Wi-Fi Signal Strength the Easy Way Whether it's using an iPhone, iPad, Android, Mac, or Windows PC, you should have a Wi-Fi connection indicator. Usually, four or five curved lines make up the Wi-Fi symbol, and the more that are filled, the stronger the connection.
To analyze a WiFi signal, you need a computer with a WiFi card and a WiFi signal analyzer like NetSpot. You can then simply start the WiFi signal analyzer, wait for it to gather information about the signal, and see if you can spot anything unusual.
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 { /// <summary> /// Converts a 802.11 SSID to a string. /// </summary> 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("<?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 ); } } } }
If the platform is Windows10, you can use Microsoft.Windows.SDK.Contracts
package to access all available wifis.
First, install Microsoft.Windows.SDK.Contracts
package from nuget.
Then, you can use next code to get ssid and signal strength.
var adapters = await WiFiAdapter.FindAllAdaptersAsync(); foreach (var adapter in adapters) { foreach (var network in adapter.NetworkReport.AvailableNetworks) { Console.WriteLine($"ssid: {network.Ssid}"); Console.WriteLine($"signal strength: {network.SignalBars}"); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With