Уведомление о подключении Wi-Fi соединения - C#
Формулировка задачи:
Добрый день ! Сделал консольное приложение которое выводит список доступных wi-fi сетей . Потом пишем название сети и вводим пароль . Происходит подключение если все указанно верно . Мне нужно отследить состояние сети ( подключилось , не подключилось и по каким причинам ).
WlanClient client = new WlanClient(); string a = "0"; string b = "0"; string c = "0"; string d = "0"; string e = "0"; string f = "0"; foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanAvailableNetwork[] wlanBssEntries = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in wlanBssEntries) { // назначаем ему имя нашей первой найденой сети, в конце убираем нулевые символы - Trim((char)0) a = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).Trim((char)0); // узнаеём дополнительную информацию о сети и так же добавляем её в листвью, но уже в наш только что созданый итем. b=(network.wlanSignalQuality.ToString() + "%"); // качество связи в процентах c=(network.dot11DefaultAuthAlgorithm.ToString().Trim((char)0)); // тип безопасности d=(network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0)); // тип шифрования e=(network.dot11BssType.ToString().Trim((char)0)); f=(network.profileName.ToString().Trim((char)0)); Console.WriteLine("{0,-16} {1,12} {2,15} {3,5} {4,15} {5,5}",a,b,c,d,e,f); }} Console.WriteLine(" "); Console.WriteLine(" "); Console.Write("ProfileName : "); String profileName = Console.ReadLine(); Console.Write("Key : "); String key = Console.ReadLine(); String hex = profileName; byte[] hy = Encoding.Unicode.GetBytes(hex); String hex2 = BitConverter.ToString(hy); hex = hex2.Replace("-", ""); hex = hex.Replace("00", ""); Console.WriteLine(hex); try { WlanClient client1 = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanAvailableNetwork[] wlanBssEntries = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in wlanBssEntries) { // String profileName = "DIR-620"; String strTemplate=""; String authentication=""; switch ((int)network.dot11DefaultAuthAlgorithm) { case 1: // Open break; case 2: // SHARED_KEY break; case 3: // WPA break; case 4: // WPA_PSK break; case 5: // WPA_NONE break; case 6: // RSNA break; case 7: // RSNA_PSK strTemplate = Properties.Resources.WPA2PSK; authentication = "WPA2PSK"; String encryption = network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0); // String key = "76543210"; String profileXml = String.Format(strTemplate, profileName, authentication, encryption, key, hex); wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName); break; default: break; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); }
По идее вот кусок кода , но как его адаптировать я не знаю
private void OnWlanNotification(ref Wlan.WlanNotificationData notifyData, IntPtr context) { switch (notifyData.notificationSource) { case Wlan.WlanNotificationSource.ACM: switch ((Wlan.WlanNotificationCodeAcm)notifyData.notificationCode) { case Wlan.WlanNotificationCodeAcm.ConnectionStart: break; case Wlan.WlanNotificationCodeAcm.ConnectionComplete: break; case Wlan.WlanNotificationCodeAcm.ConnectionAttemptFail: break; case Wlan.WlanNotificationCodeAcm.Disconnecting: break; case Wlan.WlanNotificationCodeAcm.Disconnected: break; case Wlan.WlanNotificationCodeAcm.ScanFail: break; } break; case Wlan.WlanNotificationSource.MSM: switch ((Wlan.WlanNotificationCodeMsm)notifyData.notificationCode) { case Wlan.WlanNotificationCodeMsm.Associating: break; case Wlan.WlanNotificationCodeMsm.Associated: break; case Wlan.WlanNotificationCodeMsm.Authenticating: break; case Wlan.WlanNotificationCodeMsm.Connected: break; case Wlan.WlanNotificationCodeMsm.RoamingStart: break; case Wlan.WlanNotificationCodeMsm.RoamingEnd: break; case Wlan.WlanNotificationCodeMsm.Disassociating: break; case Wlan.WlanNotificationCodeMsm.Disconnected: break; case Wlan.WlanNotificationCodeMsm.PeerJoin: break; case Wlan.WlanNotificationCodeMsm.PeerLeave: break; case Wlan.WlanNotificationCodeMsm.AdapterRemoval: break; } break; } }
Решение задачи: «Уведомление о подключении Wi-Fi соединения»
textual
Листинг программы
Wlan.WlanNotificationCodeAcm.ConnectionStart
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д