【发布时间】:2010-05-06 09:13:20
【问题描述】:
我正在为 iPhone 创建服务器-客户端应用程序。我想在同一网络中的两个应用程序之间进行通信。
对于这个功能,我打算使用套接字。 iphone 可以使用多少高效的 BSD 套接字??
是否有任何选项可以实现相同的功能?
谢谢,
吉姆。
【问题讨论】:
标签: iphone networking sockets client-server
我正在为 iPhone 创建服务器-客户端应用程序。我想在同一网络中的两个应用程序之间进行通信。
对于这个功能,我打算使用套接字。 iphone 可以使用多少高效的 BSD 套接字??
是否有任何选项可以实现相同的功能?
谢谢,
吉姆。
【问题讨论】:
标签: iphone networking sockets client-server
请参阅 iPhone Dev SDK 网站上的this thread。
CF 网络的东西有点 令人困惑且难以理解 大约。但是,这只是一组 使用 BSD 套接字的函数和 将它们与运行循环集成,以便 您不必创建线程。你 仍然可以自己使用 BSD 套接字
基本上,该线程指出了与 iPhone 环境很好地集成的多个库/框架,并且使用它们中的任何一个而不是直接的 BSD 套接字可能不会产生任何显着的性能差异。除非您对低级套接字编程非常熟悉,否则您可能会更好地使用其中一个库。
不要进行过早的优化 - 使用您最熟悉的任何套接字接口,这将帮助您快速完成工作并生成清晰、可维护的代码。
编辑
在下面回答吉姆的问题:
是的。有几个因素决定了系统范围和每个进程的套接字限制。查看at this article 以讨论这些问题。 iPhone 和 Linux 都是基于 Unix 的操作系统,因此它们可能共享一些与系统管理员相关的套接字限制,但您必须查找系统特定的管理员详细信息。
其次,UDP 和 TCP 的体系结构存在限制。基本上,UDP 和 TCP 都限制为每个机器 IP 地址 2^16 个侦听套接字,因为侦听套接字由固定的 32 位 IP 地址和 16 位端口号定义。但是,由于 connected 套接字是由 [ [src IP] [src Port] [dst IP] [dst Port] ] 的集合定义的,因此理论上您可以在单个套接字上拥有的已连接套接字的数量机器 IP 明显更高,类似于 2^64,尽管实际上您的操作系统可能会在您达到该限制之前出现问题。
【讨论】: