首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取MacOS上的实际BSSID值

无法获取MacOS上的实际BSSID值
EN

Stack Overflow用户
提问于 2018-10-05 20:44:31
回答 2查看 737关注 0票数 0

我正在尝试获取MacOSX10.14上当前WiFi连接的BSSID,但获取的是nil

返回nil的代码如下:

代码语言:javascript
复制
NSString *bssid = [[[CWWiFiClient sharedWiFiClient] interface] bssid];

虽然SSID返回有效值:

代码语言:javascript
复制
NSString *ssid = [[[CWWiFiClient sharedWiFiClient] interface] ssid];

其他解决方案适用于iOS,例如使用这里提出的CaptiveNetworks框架How do I get the current access point's MAC address/BSSID?,但一些方法,如CNCopyCurrentNetworkInfo -不支持MacOS。

EN

回答 2

Stack Overflow用户

发布于 2019-07-02 19:40:45

这不是最好的解决方案,但至少它在Qt中有效:

代码语言:javascript
复制
QString getBssidOnMac() {
    QStringList arguments;
    arguments << "-I";
    QProcess process;
    process.start("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport", arguments);
    process.waitForFinished();
    QString outp = process.readAllStandardOutput();
    QRegExp re_bssid(".*(BSSID\\:\\s([0-9a-fA-F]{1,2}(\\:[0-9a-fA-F]{1,2}){5})).*");
    if (re_bssid.indexIn(outp) !=-1) {
        return re_bssid.cap(2);
    }
    else {
        return QString();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-05-20 21:54:10

我对OSX的两点看法是:

  • Use CoreWLAN
  • Add NetworkExtensions
  • Call:

让client = CWWiFiClient.shared()保护let接口: CWInterface = client.interfaces()否则{ return nil } //在iOS上我们得到了第一个接口,这里我们应该返回多个接口。var ssid:字符串?var bssid:字符串?var interfaceNameString:字符串?对于接口中的接口{ ssid = interface.ssid() bssid = interface.bssid() interfaceNameString = interface.interfaceName ...

}

激活时要小心:

如果在OSX的App Store上,则在激活沙盒时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52665939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档