使用getifaddrs枚举网络接口.查找以"pdp"开头的ifa_name.这将是蜂窝接口(例如,pdp_ip0).测试(ifa_flags和IFF_UP)以确保接口已启动,并从ifa_addr获取IP地址.然后使用bind()将套接字绑定到该地址.
如果尚未启动,则不确定如何激活蜂窝接口.通常,我只是进行高级别的http呼叫以让iOS唤醒网络,但不确定在什么条件下,当wifi也可用时,蜂窝服务变为活动状态.我怀疑它通常是作为无线网络的后备.
http://iphonedevsdk.com/discussion/comment/120957
从那条线索看来,这似乎是不可能的。您最好的选择可能是尝试使用该协议,如果不起作用,请说“请断开与 wifi 的连接并重试”之类的内容。
这个线程说了几乎同样的事情:
您可以使用苹果编写的Reachability类来测试网络连接当前是否通过3G或WiFi,甚至检查网络上是否有特定资源可用。