我应该使用哪个高级API来管理iOS上的UDP套接字?

Mec*_*cki 7 networking udp ios

在" 网络编程主题概念指南 "的" 使用套接字和流 " 一章中,Apple说:

注意: POSIX网络不会激活iOS上的蜂窝无线电.因此,iOS中通常不鼓励使用POSIX网络API.

Apple网站还在" 网络概述指南 "的" 网络提示和陷阱 " 一章中说:

在iOS中,直接使用POSIX函数或CFSocket使用套接字不会自动激活设备的蜂窝调制解调器或按需VPN.

好的,所以在iOS上,既不应该使用POSIX套接字也不应该使用CFSocket,这只是一个围绕POSIX套接字的薄包装,它通过RunLoops支持异步网络.没问题.但是,如果需要UDP套接字,您应该使用什么API ?

Apple在" 网络概述指南 "的" 网络提示和陷阱 " 章节中说:

在连接到主机之前避免解析DNS名称

因此,理想情况下应该有一个用于管理UDP套接字的API,而不是POSIX API和CFSocket,它接受DNS名称而不是目标地址的IP地址.

也许我是盲人但我找不到任何这样的API.有任何想法吗?

使用任何第三方API(不是Apple)都不是很有趣,因为这样的API必须基于Apple API,在这种情况下我可以直接使用这个Apple API.在POSIX套接字周围编写我自己的包装器API是小菜一碟,我之前写过很多套接字包装器,我已经知道了所有令人讨厌的陷阱.但我不会使用POSIX API,这是最初的问题.

Aks*_*hah 0

Apple 有一个示例代码描述如何使用 UDP。我自己没有尝试过,但这应该给你一些很好的指导:

https://developer.apple.com/library/mac/#samplecode/UDPEcho/Introduction/Intro.html