有没有办法使用.NET访问所有WiFi接入点及其各自的RSSI值?如果我可以在不使用非托管代码的情况下完成它,那将是非常好的,如果它在单声道和.NET中工作,那将更好.
如果有可能我会申请代码样本.谢谢
以下是我发现的一些类似的stackoverflow问题:
- 在Windows Vista上获取我使用C#.Net连接的无线网络的SSID
- 在C#中管理无线网络连接
- 从C#获取无线接入点的BSSID(MAC地址)
它是一个包装项目,在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("", profileName, mac, key); wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true ); wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName ); } } } } {0} {1} {0} ESS open WEP false networkKey false {2} 0