我需要在 C ++ 的 Mac OS X Linux中扫描并收集有关本地 Wifi 接入点的信息。这可能使用Wlan
或类似于WlanScan
的东西。我在Windows中使用类似的代码,无法翻译。
此代码正在FireBreath开发项目中构建。
您是否有在Mac上使用C ++扫描Wifi接入点的示例或建议?
答案 0 :(得分:3)
你不能在普通的C ++中做到这一点,但是你可以使用Objective-C ++(你的源文件只需要有.mm扩展名,你可以在你的C ++代码中使用Objective-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。如果您有任何错误 - 请随时在评论中提问
苹果文档中也有example,但它有些过时(适用于OS X 10.6)。 OS X 10.7有一些变化。
请注意,CoreWLAN框架需要OS X 10.6或更高版本。