在Mac和iPhone上建立TCP连接或发送UDP数据报的最有效方法是什么(即最佳的努力比和可读性和可维护性)?我对经典的BSD套接字非常熟悉,但我现在的目标不是可移植性,我只是想尽快完成一个小项目。
我希望有一个苹果提供的目标C包装,但我想听听一些想法,人们正在做的事情。如果你认为BSD套接字是正确的方法,那么也可以随意地插入一些想法:我真的很有兴趣找到“正确的方法”来做它。
让我们假设协议是自定义的协议,这样基于Cocoa的HTTP客户端类就不能满足我们的需求:)
我目前的目标是通过UDP在网络上传输设备状态(例如加速度计),同时通过TCP维护信令和交付保证的事件连接(例如按下按钮)。桌面应用程序将显示此状态。
然而,我目前的应用程序正是让我问这个问题的原因;我想知道人们通常做什么。当我在7-8年前认真使用VB6时,WinSock ActiveX控件所做的事情与使用BSD套接字所做的略有不同,不管它在引擎盖下做了什么。
发布于 2010-11-24 22:01:28
对于网络来说,简单的答案是,
(1) ASIHttpRequest .注意到-这个QA是非常古老的。不幸的是,ASIHttpRequest只具有历史意义,不再可用。
(2) AsyncSocket
(3)当你开始的时候.GameKit (孩子可以使用它)
(4)使用Bonjour (两行代码)查找其他设备即可。
“苹果提供的目标-C包装”.AsyncSockets (最初是由神秘的达斯汀·J·沃斯编写)是如此的好,以至于苹果不会费心去写一个!
AsyncSockets正是你想要的。它在30万个iFone应用程序中随处可见。它是在iFone上建立的网络。希望能帮上忙。
再次注意到-这个QA是非常古老的。现在您可以很容易地找到像AsyncSockets这样的“现代版本”软件。
顺便说一句,只要使用GK,绝对没有什么错--这是没有价值的。表演会很精彩。唯一的缺点是配对只需要很长的时间和GK。这是一个幼稚的混乱,为十岁的孩子学习编程。您将能够完成100倍更快的配对直接与AsyncSockets工作。
您可能更喜欢使用一些玩具GK代码,而您知道Bonjour和所有这些。
我建议大家的共识是,在比AsyncSocket更低的水平(即原始套接字)上工作是没有意义的。在那里没有更多的表现了。
注意-如果你是新的游戏套件/ iOS,一定要阅读这个关键的提示!
希望能帮上忙。
发布于 2010-11-24 17:53:12
你的问题不能用任何细节来回答,因为你没有描述你想做什么。我能给出的最好的答案是阅读Mac和iOS的介绍性网络指南。
更新
我不认为有任何“简单的可可方式”为UDP内置。我记得这个讨论在可可开发清单上出现过好几次。茧异步套筒项目已被提到不同的地方。它声称:
AsyncUdpSocket是一个封装CFSocket的UDP/IP套接字网络库。它的工作原理与TCP版本几乎完全一样,但它是专门为UDP设计的。这包括排队的非阻塞发送/接收操作、完全委托支持、基于运行循环的自包含类以及对IPv4和IPv6的支持。
https://stackoverflow.com/questions/4269613
复制相似问题