Mac操作系统.问题.如何获得所有可用WiFi网络的SSID、BSSID和信道



如何使用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]);
}

最新更新