我想使用一种在 3G 上运行良好但在某些公司防火墙上运行不佳的消息传递协议(protocol)。即使 WiFi 网络可以访问,我的应用程序如何在无法通过 WiFi 连接时强制使用蜂窝网络?
编辑: 在通读了 Reachability 类的实现之后,我仍然不确定这两者是否确实相互排斥。很可能通过 gethostbyname()
发现这两个接口(interface),我可能会尝试看看结果如何。
最佳答案
使用 getifaddrs 枚举网络接口(interface)。查找以“pdp”开头的 ifa_name。这将是蜂窝接口(interface)(例如 pdp_ip0)。测试 (ifa_flags & IFF_UP) 以确保接口(interface)已启动,并从 ifa_addr 获取 IP 地址。然后使用 bind() 将套接字绑定(bind)到该地址。
不确定如何激活蜂窝接口(interface)(如果它尚未启动)。通常,我只是进行高级 http 调用以使 iOS 唤醒网络,但不确定在 wifi 也可用时蜂窝服务在什么条件下激活。我怀疑它通常作为 wifi 的后备。
关于ios - 如何强制 iOS 应用程序使用 3G 而不是 WiFi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925724/