Какова максимальная скорость, с которой я могу сканировать сети Wi-Fi на Mac, используя Apple CoreWLAN Framework?
Я пытаюсь многократно сканировать сети WiFi в моем окружении, чтобы потом извлечь из них некоторую информацию (например, RSSI, шум и т. Д.). Для меня важно иметь возможность быстро выполнять несколько сканирований, чтобы я мог делать это в разных местах дома / этажа.
Итак, я написал этот простой код в main.c проекта Objective C. Он сканирует сети, отображает, сколько сетей было найдено, ждет 1 секунду и повторяет процесс.
#import <Cocoa/Cocoa.h>
#import <Foundation/Foundation.h>
#import <CoreWLAN/CoreWLAN.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
CWInterface *currentInterface = [CWInterface interface];
NSLog(@"Interface: %@\n", currentInterface);
NSArray *networks;
while (true) {
networks = [[currentInterface scanForNetworksWithName:nil error:nil] allObjects];
NSLog(@"%lu networks found.", (unsigned long)networks.count);
usleep(1000000);
}
}
return 0;
}
Вывод, который я получаю, выглядит примерно так:
2015-05-22 15:32:09.103 WifiScannerXcode2[42928:13413575] Interface: <CWInterface: 0x6100000c1730> [interfaceName=en0]
2015-05-22 15:32:11.614 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:12.632 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:13.652 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:15.297 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:16.315 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:17.336 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:18.358 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:19.378 WifiScannerXcode2[42928:13413575] 37 networks found.
2015-05-22 15:32:22.902 WifiScannerXcode2[42928:13413575] 47 networks found.
2015-05-22 15:32:23.928 WifiScannerXcode2[42928:13413575] 47 networks found.
2015-05-22 15:32:25.568 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:26.590 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:27.611 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:28.632 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:29.656 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:30.684 WifiScannerXcode2[42928:13413575] 49 networks found.
2015-05-22 15:32:34.205 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:35.854 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:36.874 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:37.896 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:38.916 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:39.936 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:40.960 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:41.981 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:45.507 WifiScannerXcode2[42928:13413575] 39 networks found.
2015-05-22 15:32:47.151 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:48.176 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:49.201 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:50.225 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:51.246 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:52.268 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:53.289 WifiScannerXcode2[42928:13413575] 40 networks found.
2015-05-22 15:32:56.806 WifiScannerXcode2[42928:13413575] 40 networks found.
Я заметил, что данные сгруппированы в наборы по ~8 выборок, то есть только через 8 секунд они фактически выполняют эффективное сканирование новых сетей. Я не вижу никаких документов, подтверждающих, что это так, поэтому мой вопрос: "сколько мне нужно ждать, чтобы сделать эффективное сканирование и как мне его достичь?"
С помощью встроенного в Mac средства диагностики Wireless Diagnostic я могу выполнять эффективное сканирование примерно каждые 3 секунды. Как мне достичь этого уровня?