【问题标题】:Cocoa - how to detect if Mac is on Ethernet connection, and no WiFiCocoa - 如何检测 Mac 是否在以太网连接上,并且没有 WiFi
【发布时间】:2015-05-21 22:14:32
【问题描述】:

我需要通过 Cocoa API 了解 Mac 是通过以太网连接还是通过 WiFi 专门连接到 Internet。我正在使用 Apple 的 Reachability 类来检测 WiFi 连接,但似乎没有办法查看 Mac 是否在以太网(有线)连接上。

我还查看了SCNetworkReachabilityFlags(基于可达性),但找不到一个好方法来判断哪个是用于以太网连接的。

希望得到一些帮助。

【问题讨论】:

  • 你可以判断是否有可达性,对吧?那么,如果您检查它是否不是 wifi 怎么办——这自然不是意味着它是以太网连接吗?不知道这是否是一个有效的想法,只是想知道

标签: objective-c macos cocoa reachability


【解决方案1】:

即使您的应用在沙盒环境中运行,您也可以执行一些脚本。您可以尝试使用以下命令检查 Wi-Fi 状态:

networksetup -getinfo Wi-Fi

此外,根据自己的经验,此示例可能会有所帮助:

NSString *scriptCode  = [NSString stringWithFormat:@"do shell script \"%@\"", 
                                                   @"networksetup -getinfo Wi-Fi"];
NSDictionary *errorDict = nil;
NSAppleScript *script = [[NSAppleScript alloc]initWithSource:scriptCode];
NSAppleEventDescriptor *returnDescriptor = [script executeAndReturnError:&errorDict];

NSLog(@"%@", returnDescriptor.stringValue);

这适用于 OSX > 10.8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多