在“网络编程主题概念指南”的“使用套接字和流”一章中,Apple 说:
注意: POSIX 网络不会激活 iOS 上的蜂窝无线电。出于这个原因,在 iOS 中通常不鼓励使用 POSIX 网络 API。
同样在“网络概述指南”的“网络提示和陷阱”一章中,Apple 说:
在 iOS 中,直接使用 POSIX 函数或 CFSocket 使用套接字不会自动激活设备的蜂窝调制解调器或按需 VPN。
好的,所以在 iOS 上既不应该使用 POSIX 套接字也不应该使用 CFSocket,它只是 POSIX 套接字的一个薄包装器,它通过 RunLoops 支持异步网络。没问题。但是,如果您需要UDP Socket,您应该使用什么 API ?
避免在连接到主机之前解析 DNS 名称
因此,理想情况下,应该有一个 API 用于管理 UDP 套接字,而不是 POSIX API 和 CFSocket,它接受 DNS 名称而不是目标地址的 IP 地址。
也许我是盲人,但我找不到任何这样的 API。有任何想法吗?
使用任何第三方 API(不是来自 Apple)并不有趣,因为这样的 API 必须基于任何一个 Apple API,在这种情况下我可以直接使用这个 Apple API。围绕 POSIX 套接字编写我自己的包装 API 是小菜一碟,我之前写过很多套接字包装器,我已经知道所有令人讨厌的陷阱。但是我不会使用 POSIX API,这是这里最初的问题。