如何使用Qt C++在Mac操作系统下获得所有可用WiFi网络的SSID、BSSID和信道?
在Windows下,我使用wlanapi.lib,并通过WlanGetNetworkBssList方法获得提到的属性。有
吗在Mac操作系统下是这样的吗?例如,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信号含义:跟踪/断点陷阱"
这是什么意思?你能在这方面提出建议吗?
您可以始终使用QProcess并执行终端命令:
QStringList arguments;
arguments << "-I";
QProcess process;
process.start("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport", arguments);
这将使用-I标志启动机场命令,以显示有关当前无线网络的信息。
以下是您可以检索的属性
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]);
}