【发布时间】:2014-09-21 20:35:34
【问题描述】:
我正在阅读Networking Programming Topics:Using Sockets and Socket Streams,有一段告诉我们不要在 iOS 上使用 POSIX 套接字 API,它说:
在 iOS 中,不鼓励使用 POSIX 网络,因为它不会激活 蜂窝无线电或按需 VPN。因此,作为一般规则,您 应该将网络代码与任何常见的数据处理分开 功能并使用更高级别的 API 重写网络代码。
如文档所述,如果我使用 POSIX 套接字来完成我的网络工作,那么它不会激活蜂窝无线电。我想过如果我的设备没有连接WIFI,我的应用程序将无法访问互联网,但我通过编写下面的代码来否定它。
在示例中,我仅使用 POSIX 套接字 API 并连接到 google 的 DNS 服务器,当我的 iPhone 连接到蜂窝无线电(没有 WIFI)时它成功。
int clientSocket = socket(AF_INET, SOCK_STREAM, 0) ;
struct sockaddr_in server_addr ;
bzero(&server_addr, sizeof(server_addr)) ;
server_addr.sin_port = htons(53) ;
server_addr.sin_addr.s_addr = inet_addr("8.8.8.8") ;
server_addr.sin_family = AF_INET ;
int i = connect(clientSocket, (const struct sockaddr *)&server_addr, sizeof(server_addr)) ;
if (i >= 0) {
NSLog(@"connected") ;
}
close(clientSocket) ;
现在我的问题是“激活蜂窝无线电”是什么意思以及系统何时停用蜂窝无线电?
提前致谢。
【问题讨论】:
-
蜂窝无线电是数据通信,如 2G、3G、4G 等。
-
你应该用谷歌搜索一下。
-
@rckoenes 正如文档所述,如果我使用 POSIX 套接字来完成我的网络工作,它不会激活蜂窝无线电,这是否意味着如果我的设备没有与 WIFI 连接,我的应用程序将不会可以上网吗?
-
是的,如果我理解正确的话\。
-
@duci9y 我相信 google 比在这里提问更方便。在问之前我已经用谷歌搜索了。
标签: ios iphone sockets networking