Mac OS X Linux in C++で、ローカルWifiアクセス ポイントをスキャンして情報を収集する必要があります。これはおそらくまたは に似たものを使用します。おそらく翻訳できない Windows で動作する同様のコードがあります。WlanWlanScan
このコードは、FireBreath 開発プロジェクトでビルドされています。
Mac の C++ で Wifi アクセス ポイントをスキャンする例や提案はありますか?
Mac OS X Linux in C++で、ローカルWifiアクセス ポイントをスキャンして情報を収集する必要があります。これはおそらくまたは に似たものを使用します。おそらく翻訳できない Windows で動作する同様のコードがあります。WlanWlanScan
このコードは、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 を使用していることにも注意してください。エラーが発生する場合は、コメントでお気軽にお問い合わせください。Apple のドキュメントに
も例がありますが、やや古くなっています (OS X 10.6 用です)。OS X 10.7 ではいくつかの変更がありました。
CoreWLAN フレームワークには OS X 10.6 以降が必要であることに注意してください。