Note: POSIX networking does not activate the cellular radio on iOS.
For this reason,the POSIX networking API is generally discouraged in
iOS.
同样在“Networking Overview Guide”的“Networking Tips and Pitfalls”一章中,Apple说:
In iOS,using sockets directly using POSIX functions or CFSocket does
not automatically activate the device’s cellular modem or on-demand
VPN.
好的,所以在iOS上,既不应该使用POSIX套接字也不应该使用CFSocket,这只是一个围绕POSIX套接字的薄包装,它支持通过RunLoops进行异步网络连接.没问题.但是,如果需要UDP套接字,您应该使用什么API?
Apple在“Networking Overview Guide”的章节“Networking Tips and Pitfalls”中进一步说:
AvoID Resolving DNS names Before Connecting to a Host
因此,理想情况下应该有一个用于管理UDP套接字的API,而不是POSIX API和CFSocket,它接受DNS名称而不是目标地址的IP地址.
也许我是盲人但我找不到任何这样的API.有任何想法吗?
使用任何第三方API(不是Apple)都不是很有趣,因为这样的API必须基于Apple API,在这种情况下我可以直接使用这个Apple API.在POSIX套接字周围编写我自己的包装器API是小菜一碟,我之前写过很多套接字包装器,我已经知道了所有令人讨厌的陷阱.但我不会使用POSIX API,这是最初的问题.
解决方法 我向Apple提出了完全相同的问题,他们的回复或多或少是因为UDP套接字没有任何高级接口.无论Apple在他们的指南中说什么,当使用UDP时,要么直接使用POSIX套接字,要么与poll()或select()等异步管理器结合使用,要么创建POSIX套接字(可能使用bind()和/或connect( )根据需要)然后使用CFSocketCreateWithNative()将其包装到CFSocket对象中以获得RunLoop集成.这是最好的API.所有更高级别的API都设计为仅与TCP一起使用. 总结以上是内存溢出为你收集整理的我应该使用哪个高级API来管理iOS上的UDP套接字?全部内容,希望文章能够帮你解决我应该使用哪个高级API来管理iOS上的UDP套接字?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)