如何使用Qt C ++在Mac OS下获取所有可用WiFi网络的SSID,BSSID和频道?
在Windows下我使用wlanapi.lib并通过WlanGetNetworkBssList方法获得提及的属性。有没有 在Mac OS下这样的事情?例如,CWNetwork个对象的列表。
我正在尝试以下列方式:
#import <CoreWLAN/CWInterface.h>
CWInterface *currentInterface = [CWInterface interfaceWithName:nil];
if (currentInterface == NULL)
return false;
if([currentInterface power])
{
NSError *err = nil;
NSSet *scanResults = [currentInterface scanForNetworksWithBSSID:nil error:&err];
if (!err)
{
for(CWNetwork *network in scanResults)
{
//print SSID
}
}
}
但是“scanForNetworksWithBSSID:nil”的调用发生错误: “ 信号名称:SIGTRAP 信号含义:跟踪/断点陷阱 “
这是什么意思? 你可以在这个建议吗?
答案 0 :(得分:0)
您始终可以使用QProcess并执行终端命令:
QStringList arguments;
arguments << "-I";
QProcess process;
process.start("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport", arguments);
这将使用-I标志触发机场命令,以显示有关您当前所在的无线网络的信息。
答案 1 :(得分:0)
以下是您可以检索的属性
CWInterface* wifi = [[CWWiFiClient sharedWiFiClient] interface];
NSArray *networkScan = [[wifi scanForNetworksWithName:nil error:nil] allObjects];
for (CWNetwork *network in networkScan) {
NSLog ( @"SSID: %@ ,\n \
BSSID: %@ , \n \
rssiValue: %ld , \n \
noiseMeasurement: %ld, \n\
beaconInterval: %ld , \n \
countryCode: %@ \n ,\
ibss: %i ,\n\
wlanChannel: %@ , \n\
", [network ssid],[network bssid],[network rssiValue],[network noiseMeasurement],(long)[network beaconInterval], [network countryCode] , [network ibss], [[network wlanChannel]description]);
}