Thursday, June 06, 2013

Поиск сетей и подключение к Wi-Fi на C#

Inline image 2

Однажды искал возможность подключиться из своей программы к WI-Fi сети, для кого-то может это и не проблема, а для меня это оказалось большим камнем на дороге. 

Разделим наш проект на две части, условно, просто для того что бы лучше разобраться.

Для начала создадим проект в Visual Studio на языке C# — WindowsFormsApplication и назовём его так как нам больше всего нравится, я назвал «Wifi».

Часть первая: Поиск доступных сетей

Итак, закидываем на форму два котрола:
  • ListView — назовём listNet, и добавим в него 4 колонки, просто для наглядности.
  • Button — назовём btnRefresh

...
...

WlanClient client = new WlanClient();
 
    foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
    {
 
        Wlan.WlanAvailableNetwork[] wlanBssEntries = wlanIface.GetAvailableNetworkList( 0 );
 
        //очищаем листвью, что бы не дублировать найденные сети при повторном нажатии
 
        istNet.Items.Clear();
        foreach (Wlan.WlanAvailableNetwork network in wlanBssEntries)
        {
            // создаём экземпляр элемента листвью
            ListViewItem listItemWiFi = new ListViewItem(); 
 
            // назначаем ему имя нашей первой найденной сети, в конце убираем нулевые символы - Trim((char)0)
            listItemWiFi.Text = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).Trim((char)0);
 
            // узнаём дополнительную информацию о сети и так же добавляем её в листвью, но уже в наш только что созданный итэм.
            listItemWiFi.SubItems.Add(network.wlanSignalQuality.ToString() + "%"); // качество связи в процентах
            listItemWiFi.SubItems.Add(network.dot11DefaultAuthAlgorithm.ToString().Trim((char)0)); // тип безопасности
            listItemWiFi.SubItems.Add(network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0)); // тип шифрования

Read more: Habrahabr.ru
QR: Inline image 1