【问题标题】:How efficient BSD sockets to writew server client application on iphone?BSD 套接字在 iphone 上编写服务器客户端应用程序的效率如何?
【发布时间】:2010-05-06 09:13:20
【问题描述】:

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

对于这个功能,我打算使用套接字。 iphone 可以使用多少高效的 BSD 套接字??

是否有任何选项可以实现相同的功能?

谢谢,
吉姆。

【问题讨论】:

    标签: iphone networking sockets client-server


    【解决方案1】:

    请参阅 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,尽管实际上您的操作系统可能会在您达到该限制之前出现问题。

    【讨论】:

    • 感谢您的意见。此时还有一个问题是使用套接字时连接数是否有限制?
    • @Jim:我的答案太长,无法发表评论,所以我将其添加为我的答案的编辑,见上文。
    • 谢谢罗伯茨,这很有道理。
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多