C++ 如何在C+中扫描Wifi接入点+;在MacOSX上

C++ 如何在C+中扫描Wifi接入点+;在MacOSX上,c++,macos,network-programming,wifi,firebreath,C++,Macos,Network Programming,Wifi,Firebreath,我需要在Mac OS XLinux中的C++中扫描并收集有关本地Wifi接入点的信息。这可能使用Wlan或类似于WlanScan的东西。我有类似的代码在Windows中工作,不可能翻译 这段代码是在FireBreath开发项目中构建的 你有C++ C++上的WiFi接入点的例子或建议吗? < P>你不能用普通C++来做这件事,但是你可以使用ObjuleC++(你的源文件只需要有.mm扩展,你可以用ObjuleC在C++代码中使用)。请看一下框架。 你应该这样写: #import <Core

我需要在Mac OS XLinux中的C++中扫描并收集有关本地Wifi接入点的信息。这可能使用
Wlan
或类似于
WlanScan
的东西。我有类似的代码在Windows中工作,不可能翻译

这段代码是在FireBreath开发项目中构建的


<>你有C++ C++上的WiFi接入点的例子或建议吗?

< P>你不能用普通C++来做这件事,但是你可以使用ObjuleC++(你的源文件只需要有.mm扩展,你可以用ObjuleC在C++代码中使用)。请看一下框架。 你应该这样写:

#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;
}
#导入
结构访问点
{
字符串ssid;
字符串bssid;
int-rssi;
};
苹果文档中的vector,但它有点过时(它适用于OS X 10.6)。OS X 10.7中有一些更改。


请注意,CoreWLAN框架需要OS X 10.6或更高版本。

谢谢@cody。这看起来非常有希望。我看到
scanForNetworksWithSSID
被阻塞了。很好,我已经在异步线程中了。你是说我可以使用Objective-C,因为我在FireBreath工作?(也就是说,据你所知,Objective-C在FireBreath中可以工作吗?)关于FireBreath中的Objective-C,这似乎回答了我的问题:对不起,我不知道FireBreath是什么,但Objective-C主要是运行时的,它是OS X的本机,所以如果你需要为web浏览器制作跨平台/跨浏览器的Internet插件,我认为这将是非常棒的。一站式购物。@DavidManpearl您可以询问您的界面(CWInterface)。属性名称相同。如果接口未连接,则为零