我正在为iPhone创建服务器客户端应用程序。我想在同一网络中的两个应用程序之间进行通信。
对于此功能,我打算使用套接字。与iphone一起使用多少效率的BSD套接字?
是否有可用于实现相同功能的选项?
谢谢,
吉姆。
答案 0 :(得分:1)
请参阅iPhone Dev SDK网站上的this thread。
CF网络的东西有点儿 令人困惑,难以包裹你的头脑 周围。但是,它只是一组 使用BSD套接字的函数 将它们与运行循环集成在一起 你不必创建线程。您 仍然可以自己使用BSD套接字
基本上,该线程指出了多个与iPhone环境很好集成的库/框架,并且使用它们中的任何一个而不是直接的BSD套接字可能不会产生任何显着的性能差异。除非你对低级套接字编程感到满意,否则你可能更适合使用其中一个库。
不要过早优化 - 使用您最熟悉的套接字接口,这将有助于您快速完成工作并生成清晰,可维护的代码。
修改强>
回应Jim的问题:
是。有几个因素决定了系统范围和每个进程套接字限制。看看at this article,讨论这些问题。 iPhone和Linux都是基于Unix的操作系统,所以他们可能会分享一些与系统管理相关的套接字限制,但你必须查找系统特定的管理员详细信息。
其次,UDP和TCP的体系结构存在限制。基本上,UDP和TCP都限制为每个机器IP地址2 ^ 16个侦听套接字,因为侦听套接字由固定的32位IP地址和16位端口号定义。但是,由于连接套接字是由[[src IP] [src端口] [dst IP] [dst端口]]的集合定义的,因此理论上可以在单个上连接套接字的数量机器IP明显更高,类似于2 ^ 64,虽然实际上你的操作系统可能会在你达到这个限制之前停止。