2009-07-31 51 views
3

我想知道是否有人知道有一个组合的Objective-C Bonjour/TCP堆栈,这会让我忘记管理套接字,广播服务等,而是让我只是托管一个服务和/或获取现有服务的列表并连接到一个。然后继续从服务器端发送消息到特定客户端或从客户端发送到服务器。Objective-C Bonjour/TCP Stack

我认为任何收到的消息和/或发现的服务都会通过委托方法发送给我,而其余的肮脏工作则由堆栈决定。

我意识到这并不是很难实现我自己,我已经完成了一些工作,但使用成熟的框架会更有意义。

如果它与iPhone兼容,则需要加分。

回答

4

我会说“自己动手”。

如果您不认为问题中列出的要求会发生变化,那么一个简单但经过充分测试的套接字服务器+ netservices实现和套接字+流封装将会很好 - 您可能会甚至不需要本身的“框架”。

我为tutorial实现了类似的东西,并且迄今为止已经在几个不同的项目中使用它。您正在查看TCP套接字服务器的大约200行代码,以及大约300行的Connection类(带有代理以及所有这些代码)。

0

如何使用内置于iPhone和OSX的NSNetServices?这完成了发布/订阅Bonjour服务的所有工作。当然,如果你发布一个服务,你需要一个与之通信的套接字,并且根据你使用的协议,你处理传入消息的方式(以及是否有响应等)意味着您必须先知道该消息传递基础架构的一些知识。如果你甚至不能写出这样的话,那么在事实上包含所有协议的东西HTTP,可能是前进的方向。您可以在设备上托管自己的迷你网络服务器,并让HTTP请求进行通话。但是服务的实现与该服务的发现是正交的。

+0

不是我真正想到的。我的意思是某种类型/框架,它会照顾所有TCP低级别的东西,并将它与Bonjour结合在一起(实际上这不是问题,我现在正在使用NSNetServices)。我仍然会收到原始数据并根据需要进行响应。 这个想法只是让框架使用bonjour来发现服务器,然后创建一个通信通道,而不必担心初始化套接字,为它们排队读取等等。 很可能存在这样的情况。 – 2009-08-10 11:13:42

+0

正如我所说的 - 您可以使用HTTP服务器来处理协议和通信层,并将其自身挂钩。开发者示例代码中有几个例子可以适应这种情况。 – AlBlue 2009-08-12 08:26:09

0

ConnectionKit,它可以使通过FTP,HTTP,SFTP,WebDAV和Amazon S3进行通信更容易。它不直接支持iPhone,因为Cocoa是它的依赖之一,但我想它是可移植的。我不确定这是否会对你的案件有任何用处,但我认为我会把它扔在那里以防万一。

0

怎么样使用AsyncSocket。我没有亲自使用它,但它似乎是您的最佳选择。

+0

这是一个很不错的图书馆,但还是有一些低调的混乱。 – 2009-08-14 08:19:14

1

查看Apple的iPhone的WiTap示例应用程序。你要求的许多结构已经存在。你可以从iPhone Dev Center中找到它。

3

听起来像你正在寻找包含在iPhone SDK中的GameKit框架。 GameKit通过GKSession提供了你正在寻找的东西。这里有很多文档,但the official Apple guide是一个很好的开始。