我需要在C++中的Mac OS X Linux 中扫描并收集有关本地Wifi接入点的信息。这可能使用或类似的东西。我有类似的代码在 Windows 中工作,不可能被翻译。Wlan
WlanScan
此代码正在 FireBreath 开发项目中构建。
您有在 Mac 上用 C++ 扫描 Wifi 接入点的示例或建议吗?
我需要在C++中的Mac OS X Linux 中扫描并收集有关本地Wifi接入点的信息。这可能使用或类似的东西。我有类似的代码在 Windows 中工作,不可能被翻译。Wlan
WlanScan
此代码正在 FireBreath 开发项目中构建。
您有在 Mac 上用 C++ 扫描 Wifi 接入点的示例或建议吗?
你不能在普通的 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。如果您遇到一些错误 - 请随时在评论中提问。
苹果文档中也有示例,但它有些过时(适用于 OS X 10.6)。OS X 10.7 有一些变化。
请注意,CoreWLAN 框架需要 OS X 10.6 或更高版本。