在Mac/iPhone上进行联网的最有效方法是什么?

Iva*_*ica 1 iphone macos networking cocoa cocoa-touch

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

我很想拥有Apple提供的Objective-C包装器,但我想听听一些关于人们通常做什么的想法.如果您认为BSD套接字是可行的方法,请随意提出一些想法:我真的只是想找到"正确的方法"来做到这一点.

让我们假设协议是自定义协议,因此基于Cocoa的HTTP客户端类不能为我们的需求提供服务:)


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

但是,我目前的申请正是让我提出问题的原因; 我想知道人们通常做什么.大约7 - 8年前,当我最后一次认真使用VB6时,WinSock ActiveX控件的功能与BSD套接字相比有所不同,无论它在幕后做什么.

Fat*_*tie 6

For networking, the simple answer is,

(1) ASIHttpRequest ........ NOTE - this QA is very old. Unfortunately ASIHttpRequest is of historic interest only and is no longer available.

(2) AsyncSocket

(3) When you're starting out ... GameKit (a child can use it)

(4) Just use Bonjour (two lines of code) to find other devices.

"an Apple-provided Objective-C wrapper" ... AsyncSockets (written originally by the mysterious Dustin J. Voss) is SO GOOD that Apple just won't bother trying to write one!

AsyncSockets is exactly what you're after. It is used everywhere in the 300,000 iFone apps. It "is" networking on the iFone. Hope it helps.

AGAIN NOTE - this QA is very old. You can easily now find "modern versions of" software like AsyncSockets.

顺便说一句,没有什么是完全没有错的 - 只需要使用GK ......性能可以是惊人的.关于唯一的缺点是配对只需要很长时间与GK.这对于十岁的孩子学习编程而言是一个幼稚的混乱.您可以直接使用AsyncSockets进行100倍快速配对.

您可能更喜欢使用一些玩具GK代码,而您可以找出Bonjour等等.

我认为意见的共识是没有必要在比AsyncSocket更低的级别(即原始套接字)上工作......在那里没有更多的性能.

注意 - 如果您是gamekit/iOS的新手,请务必阅读此重要提示!
客户端/服务器GKSessions

希望能帮助到你.