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