我如何获得可用的WiFi接入点和​​在.net中的信号强度? [英] How do I get the available wifi APs and their signal strength in .net?

查看:222
本文介绍了我如何获得可用的WiFi接入点和​​在.net中的信号强度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法使用.NET访问所有的WiFi接入点和​​各自的RSSI值?这将是非常好的,如果我能做到这一点,而不使用非托管code或者即使它曾在单声道,以及.NET更好。

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.

如果有可能,我会并欣赏一个code样本。 谢谢

If it is possible i would appriciate a code sample. Thanks


下面是一些similiar计算器的问题,我发现:

Here are a few similiar stackoverflow questions i found:

- <一个href="http://stackoverflow.com/questions/431755/get-ssid-of-the-wireless-network-i-am-connected-to-with-c-net-on-windows-vista">Get无线网络,我在Windows Vista

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

-Managing wireless network connection in C#

- <一个href="http://stackoverflow.com/questions/187777/get-bssid-mac-address-of-wireless-access-point-from-c">Get从C#的无线接入点的BSSID(MAC地址)

-Get BSSID (MAC address) of wireless access point from C#

推荐答案

这是一个包装项目,在的 HTTP://www.$c$cplex.com/managedwifi

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

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

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

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

这篇关于我如何获得可用的WiFi接入点和​​在.net中的信号强度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆