菜鸟教程小白 发表于 2022-12-13 09:53:45

ios - 在 iOS 设备上,en0 是否始终是 Wi-Fi?


                                            <p><p>我正在尝试使用 <code>getifaddrs()</code> 并搜索 <code>en0</code> 名称来获取 iOS 设备上 wifi 接口(interface)的 IP 地址。这工作正常,但它假定 <code>en0</code> 始终是 Wi-Fi。有什么方法可以确保我查询的接口(interface)是专门的 Wi-Fi 以备将来验证?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我使用以下方法通过查找具有 wifi 站 BSSID 的设备来查找 wifi 信息。它还将有一个 SSID。</p>

<p>以下类方法仅返回 wifi 信息字典。它是一个简单的扩展,还返回设备标签(<code>ifname</code> 变量)。正如您所指出的,它通常是 en0,但如果将来它不是 en0,这将作为确保您拿起 wifi 的一种方式。</p>

<pre><code>+ (NSDictionary *)getWifiInfo {
    NSDictionary *ret=nil;

    // Get the supported interfaces.
    NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();

    // Find one with a BSSID and return that. This should be the wifi.
    for (NSString *ifnam in ifs) {
      NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);

      NSLog(@&#34;Network device found = %@&#34;, info.description);

      if (info[(__bridge NSString *)kCNNetworkInfoKeyBSSID]) {
            // Return this as it should be the right one given it has a MAC address for the station
            ret=info;
      }
    }

    NSLog(@&#34;Exit: returning wifi info = %@&#34;, ret.description);

    return ret;
}
</code></pre>

<p>一旦你有了基于 BSSID 的设备标签,你就可以使用 <code>getifaddrs</code> 来获取它的 IP、网关等,知道它是 wifi 设备。</p>

<p><strong>NB</strong>这会在 iOS 模拟器中返回 nil,因为没有检测到 wifi,因此为了进行测试,您需要一些解决方法代码来满足您的需求。</p>

<p>一个 hacky 选项是找到与 <code>02:00:00:00:00:00</code> 关联的 MAC 的 IP 地址。 iOS 对编码器隐藏了 MAC 地址,它有这个值。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 设备上,en0 是否始终是 Wi-Fi?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32104279/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32104279/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 设备上,en0 是否始终是 Wi-Fi?