- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我打算用 C 编写一个跨平台库,这需要做一些网络。我看到 iOS 支持套接字,但 Apple 开发者网站警告不要使用 POSIX 套接字:
In iOS, POSIX networking is discouraged because it does not activate the cellular radio or on-demand VPN. Thus, as a general rule, you should separate the networking code from any common data processing functionality and rewrite the networking code using higher-level APIs.
然而,它也表明 POSIX 套接字是跨平台的不错选择。由于 POSIX 套接字不会自动激活蜂窝 radio ,我需要自己来做,对吗?有没有比简单地打开与更高级别的 api 的连接并事先关闭连接更好的方法?
最佳答案
正在尝试同样的事情,尽管文档说较低级别的 API 不会激活蜂窝 radio 和按需 VPN,但事实证明它对于 TCP 连接并不完全正确。
在 UDP 的情况下,这适用并且您的 UDP 数据包大部分时间都不会被发送。要解决这个问题,只需使用较低级别的 API 打开 TCP 的监听套接字,这将激活蜂窝 radio 或按需 VPN,并在完成后关闭套接字。
对于 TCP,您可以将低级 API 用于 iOS 设备上的服务器端代码,这会激活蜂窝 radio 或按需 VPN,但对于 iOS 设备上的客户端代码,最好使用更高级别的 API已提供。无论哪种方式, radio 都处于事件状态,您不必担心数据包未发送。
顺便说一句,这就是我目前正在做的事情。
关于ios - 我如何在 iOS 中激活蜂窝 radio ,因为 bsd-sockets 不会自动激活它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25045829/
我是一名优秀的程序员,十分优秀!