macos — Как сканировать точки доступа Wi-Fi в C ++ на Mac OS X

Мне нужно сканировать и собирать информацию о местных Wi-Fi точки доступа в Mac OS X Linux в C ++. Это возможно использует Wlan или что-то похожее на WlanScan, У меня есть аналогичный код, работающий в Windows, который не может быть переведен.

Этот код создается в проекте разработки FireBreath.

У вас есть пример или предложение для сканирования точек доступа Wi-Fi в C ++ на Mac?

2

Решение

Вы не можете сделать это на простом C ++, но вы можете использовать Objective-C ++ (ваш исходный файл должен иметь расширение .mm, и вы можете использовать Objective-C прямо в своем коде C ++). Взгляни на CoreWLAN фреймворк.
Вы должны написать что-то вроде этого:

#import <CoreWLAN/CoreWLAN.h>

struct AccessPoint
{
string ssid;
string bssid;
int rssi;
};

vector<AccessPoint> ScanAir(const string& interfaceName)
{
NSString* ifName = [NSString stringWithUTF8String:interfaceName.c_str()];
CWInterface* interface = [CWInterface interfaceWithName:ifName];

NSError* error = nil;
NSArray* scanResult = [[interface scanForNetworksWithSSID:nil error:&error] allObjects];
if (error)
{
NSLog(@"%@ (%ld)", [error localizedDescription], [error code]);
}

vector<AccessPoint> result;
for (CWNetwork* network in scanResult)
{
AccessPoint ap;
ap.ssid  = string([[network ssid] UTF8String]);
ap.bssid = string([[network bssid] UTF8String]);
ap.rssi = [network rssiValue];
result.push_back(ap);
}

return result;
}

Я не тестировал этот код, но я использую аналогичный код в своем проекте, поэтому он должен работать. Обратите внимание, что я использую ARC здесь. Если вы получите некоторые ошибки — не стесняйтесь спрашивать в комментариях.
Существует также пример в документации Apple, но это несколько устарело (это для OS X 10.6). Были некоторые изменения в OS X 10.7.

Обратите внимание, что для инфраструктуры CoreWLAN требуется OS X 10.6 или выше.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]