Как получить доступные точки доступа Wi-Fi и их уровень сигнала в .net?

Есть ли способ получить доступ ко всем точкам доступа WiFi и их соответствующим значениям RSSI с помощью .NET? Было бы очень приятно, если бы я мог сделать это без использования неуправляемого кода или даже лучше, если он работал как в mono, так и в .NET.

Если возможно, я бы присвоил образец кода. благодаря


Вот несколько похожих вопросов stackoverflow, которые я нашел:

– Получить SSID беспроводной сети, с которой я подключен, с C # .Net в Windows Vista

– Управление беспроводным сетевым подключением в C #

– Получить BSSID (MAC-адрес) точки беспроводного доступа от C #

Это проект-shell с управляемым кодом в 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 ); } } } } 

Используйте собственные API-интерфейсы Wifi, присутствующие во всех системах Vista и XP SP3. У XP SP2 есть другой API, с помощью которого вы можете сделать то же самое.

Как перечислить сети

Как получить силу сигнала

Возможно, вы сможете достичь этого, используя запросы WMI. Взгляните на эту тему .

Если вы используете vista, wmi не работает со всеми сетевыми адаптерами, другой альтернативой для Vista является использование команды netsh. Взгляните на эту статью кодекса.

Я нашел другой способ сделать это, хотя он действительно стоит денег.

Существует библиотека .NET, доступная на rawether.net, которая позволяет получить доступ к драйверам ethernet.

  • Проверьте Wi-Fi и GPS-соединение или нет в Android?
  • Доступ к информации о WiFi в iPhone через SDK
  • Android включает и отключает Wi-Fi HotSpot программно
  • Как рассчитать расстояние от Wifi-маршрутизатора, используя силу сигнала?
  • Как получить имя Wi-Fi-сети из Android с помощью API Android?
  • Wifi Connect-Disconnect Listener
  • Запуск / установка / отладка приложений Android через Wi-Fi?
  • Как передавать файлы между устройствами Android с помощью Wi-Fi Direct?
  • Точка доступа Wi-Fi с учетной записью
  • В гостевой сети Windows 7 используется один адаптер для приема и второй адаптер для создания хост-сети
  • Как избежать задержки в сообщениях Android GCM / изменении сердечного ритма
  • Давайте будем гением компьютера.