BSD套接字在iPhone 3G环境中不起作用

Kyl*_*yle 3 sockets iphone network-programming ios

我注意到在为iPhone 3G开发时很多次,BSD套接字功能都会失败.我当时也注意到,3G天线甚至没有打开,也没有WIFI Access来备份网络呼叫(所以看来它不支持网络请求似乎很荒谬)..这个信息是在SDK中使用Apple的应用程序验证了连接测试,或类似的东西.

基本上如果您加载Safari或其他东西,然后快速加载应用程序它会没事.当然,这是不理想的.显然,对于apple来说,gethostbyname()或类似的东西绝不是打开天线的理由.

我联系了Apple,他们说BSD功能不会打开天线,而是调用所有Objective-C CFNetwork功能.我想要便携式代码,那么有没有办法保持我现有的BSD设置?我真的不喜欢在Objective-C中编码,所以如果有人知道一个解决方案,那就太棒了.

Bra*_*son 8

CFStream插槽添置什么Apple建议您使用,而不是直接的BSD套接字.他们特别警告在这里使用BSD插座:

虽然iPhone OS中提供了BSD(POSIX)网络API,但您应该避免使用它们.如果直接与套接字通信,则iPhone OS的某些网络功能(如VPN On Demand)不起作用.请改用CFStream Socket Additions中提供的API.

请注意,CFNetwork等不是Objective-C,而是几乎所有内容的直接C.