Сканирование сетей Wi-Fi
Сканирование позволяет обнаружить беспроводные сети (точки доступа) в зоне досягаемости устройства и узнать их рабочие параметры: имя, радиоканал, уровень сигнала и т. д. Для этого есть два метода - wln.scan и wln.activescan. Оба метода являются задачами, и существует определённый правильный способ выполнения задач.
Методы wln.scan и wln.activescan будут отклонены (вернут 1 - REJECTED), если:
- В данный момент выполняется другая задача.
- Беспроводной модуль расширения Wi-Fi не загружен должным образом (wln.enabled = 0 - NO).
Пассивное и активное сканирование
Метод wln.scan выполняет пассивное обнаружение сетей Wi-Fi. При пассивном обнаружении модуль Wi-Fi перехватывает «маяки» (beacons), которые передают беспроводные сети, и извлекает из этих пакетов информацию о сети. Так нельзя собрать сведения о «скрытых» беспроводных сетях, не транслирующих свои SSID (имена).
Пассивное сканирование выполняется во всех частотных диапазонах и режимах, разрешённых текущим значением wln.band, независимо от значения wln.domain. Это не нарушает никаких норм, потому что при пассивном сканировании устройство ничего не передаёт.
Метод wln.activescan активно «прощупывает» эфир вокруг устройства, отправляя - как вы уже догадались - пробные («probe») пакеты. Он находит все беспроводные сети, которые нашёл бы wln.scan, и, кроме того, может обнаружить скрытые сети, но только если вам заранее известны их имена.
Активное сканирование (отправка пробных пакетов) выполняется в диапазонах и режимах, разрешённых текущим значением wln.band, и дополнительно ограничено каналами, разрешёнными в wln.domain.
Дополнительная информация
Сканировать можно в любое время, даже когда интерфейс Wi-Fi подключён к сети (wln.associationstate = 1 - PL_WLN_ASSOCIATED) или держит собственную сеть (wln.associationstate = 2 - PL_WLN_OWN_NETWORK). Но помните, что сканирование временно нарушает обмен по Wi-Fi: для поиска доступных точек доступа нужно проверить все (разрешённые) частоты, а радиомодуль, конечно, не может продолжать обмен, перескакивая с канала на канал.
Учтите, что на WA2000 время сканирования доступных сетей зависит от wln.band. Подробнее см. Выбор разрешённых диапазонов.
Можно обнаруживать все сети или ограничить результат сканирования только сетями инфраструктуры либо только сетями ad hoc. Это регулирует свойство wln.scanfilter.
Оба метода, wln.scan и wln.activescan, принимают один строковый аргумент. Наличие или отсутствие этого аргумента определяет «режим работы» методов: можно обнаружить все (нескрытые) беспроводные сети в зоне досягаемости или попытаться собрать информацию об указанной сети.