Мне нужно сканировать и собирать информацию о местных Wi-Fi точки доступа в Mac OS X Linux в C ++. Это возможно использует Wlan
или что-то похожее на WlanScan
, У меня есть аналогичный код, работающий в Windows, который не может быть переведен.
Этот код создается в проекте разработки FireBreath.
У вас есть пример или предложение для сканирования точек доступа Wi-Fi в C ++ на Mac?
Вы не можете сделать это на простом 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 или выше.
Других решений пока нет …