iphone - 在 Mac/iPhone 上进行联网的最有效方法?

标签 iphone cocoa cocoa-touch macos networking

在 Mac 和 iPhone 上建立 TCP 连接或发送 UDP 数据报的最有效方法(即工作量与可读性和可维护性的最佳比率)是什么?我非常熟悉经典的 BSD 套接字,但我现在的目标不是可移植性;我只是想快速完成一个小项目。

我很想拥有一个 Apple 提供的 Objective-C 包装器,但我想听听一些关于人们通常所做的事情的想法。如果您认为 BSD 套接字是可行的方法,也请随意提出一些想法:我真的只是对找到“正确的方法”感兴趣。

假设该协议(protocol)是自定义协议(protocol),因此基于 Cocoa 的 HTTP 客户端类无法满足我们的需求:)

<小时/>

我当前的目标是通过 UDP 在网络上传输设备状态(例如加速度计),同时通过 TCP 维持信令和交付保证事件(例如按下按钮)连接。桌面应用程序将显示此状态。

但是,我当前的申请正是让我提出这个问题的原因;我想知道人们通常做什么。当我上次认真使用 VB6 大约 7-8 年前时,WinSock ActiveX 控件所做的事情与 BSD 套接字所做的事情有点不同,无论它在幕后做了什么。

最佳答案

对于网络,简单的答案是,

(1) ASIHttpRequest ........ 注意 - 这个 QA 非常古老。不幸的是,ASIHttpRequest 仅具有历史意义,并且不再可用。

(2)AsyncSocket

(3) 当你开始时...... GameKit( child 可以使用它)

(4) 只需使用 Bonjour(两行代码)即可查找其他设备。

“Apple 提供的 Objective-C 包装器”...AsyncSockets(最初由神秘的 Dustin J. Voss 编写)太好了,Apple 根本不会费心去编写一个!

AsyncSockets 正是您所追求的。它在 300,000 个 iFone 应用程序中随处可见。它"is"iFone 上的网络。希望对您有所帮助。

再次注意 - 此 QA 非常古老。您现在可以轻松找到 AsyncSockets 等软件的“现代版本”。

顺便说一句,仅使用 GK 绝对没有任何问题,这一点毫无值(value)。性能可能会非常惊人。唯一的缺点是与 GK 配对需要很长时间。这是为十岁 child 学习编程而创造的幼稚困惑。直接使用 AsyncSockets 进行配对的速度将提高 100 倍。

当您了解 Bonjour 等内容时,您可能更喜欢使用一些玩具 GK 代码。

我建议大家一致认为,在比 AsyncSocket 更低的级别(即原始套接字)工作是没有意义的。那里没有更多的性能。

注意 - 如果您是 gamekit/iOS 新手,请务必阅读此重要提示!
Client/Server GKSessions

希望有帮助。

关于iphone - 在 Mac/iPhone 上进行联网的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269613/

相关文章:

objective-c - 如何在 View 顶部添加模糊 View ?

objective-c - 将对象添加到 NSMutableArray 时使用 SIGABRT

iphone - 使用 Core Data 实现枚举的最佳方法

iphone - self 是一个指针吗?

ios - iPhone 应用加载

javascript - 使用 iphone dev 将 HTML 字符串转换为普通文本

iphone - 在同一个 #define 中识别 iPhone 3、4 和 5

ios - 在 UITableViewCell 上创建水平渐变

iphone - 核心数据查询 1<-->>2<<-->3。如何从 3 中得到 1?

ios - UIImagePickerController 在相机胶卷中打开