我想知道是否有人知道那里有一个组合的 Objective-C Bonjour/TCP 堆栈,这将使我忘记管理套接字、广播服务等,而让我只托管一个服务和/或获取现有服务的列表和连接到一个。然后继续从服务器端向特定客户端或从客户端向服务器发送消息。
我认为任何收到的消息和/或发现的服务都将通过委托方法发送给我,其余的脏活将由堆栈负责。
我意识到自己实现这并不难,而且我已经完成了一些,但是使用成熟的框架会更有意义。
如果它与 iPhone 兼容,则加分。
我想知道是否有人知道那里有一个组合的 Objective-C Bonjour/TCP 堆栈,这将使我忘记管理套接字、广播服务等,而让我只托管一个服务和/或获取现有服务的列表和连接到一个。然后继续从服务器端向特定客户端或从客户端向服务器发送消息。
我认为任何收到的消息和/或发现的服务都将通过委托方法发送给我,其余的脏活将由堆栈负责。
我意识到自己实现这并不难,而且我已经完成了一些,但是使用成熟的框架会更有意义。
如果它与 iPhone 兼容,则加分。
我会说“自己做”。
如果您认为问题中列出的要求不会改变,那么一个简单但经过良好测试的套接字服务器+网络服务实现和套接字+流的包装器就可以了——您甚至可能不需要“框架”本身。
我已经为教程实现了类似的东西,并且到目前为止已经在几个不同的项目中使用它。您正在查看大约 200 行用于 TCP 套接字服务器的代码,以及大约 300 行用于连接类(包括委托和所有这些)的代码。
听起来您正在寻找 iPhone SDK 中包含的 GameKit 框架。GameKit 通过 GKSession 提供您正在寻找的东西。那里有很多文档,但Apple 官方指南是一个很好的起点。
查看适用于 iPhone 的 Apple 的 WiTap 示例应用程序。您要求的许多结构已经存在于那里。您可以在iPhone Dev Center上找到它。
使用iPhone 和 OSX 内置的NSNetServices怎么样?这完成了发布/订阅 Bonjour 服务的所有工作。
当然,如果您要发布服务,则需要与套接字进行通信,并且根据您使用的协议,处理传入消息的方式(以及是否有响应等)意味着您必须事先了解该消息传递基础架构是什么。
如果您甚至懒得写那个,那么通过事实上的无所不包的协议 HTTP 托管一些东西可能是前进的方向。您可以在设备上托管您自己的迷你网络服务器,让 HTTP 请求进行对话。但是服务的实现与该服务的发现是正交的。
ConnectionKit可以让通过 FTP、HTTP、SFTP、WebDAV 和 Amazon S3 进行通信变得更加容易。它不直接支持 iPhone,因为 Cocoa 是它的依赖项之一,但我想它是可移植的。我不确定这对你的情况是否有用,但我想我会把它扔在那里以防万一。
使用AsyncSocket怎么样。我没有亲自使用过它,但它似乎是您的完美选择。