BSD套接字如何在iphone上编写服务器客户端应用程序?

时间:2010-05-06 09:13:21

标签: iphone networking sockets client-server

我正在为iPhone创建服务器客户端应用程序。我想在同一网络中的两个应用程序之间进行通信。

对于此功能,我打算使用套接字。与iphone一起使用多少效率的BSD套接字?

是否有可用于实现相同功能的选项?

谢谢,
吉姆。

1 个答案:

答案 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,虽然实际上你的操作系统可能会在你达到这个限制之前停止。