【问题标题】:Objective-C Bonjour/TCP StackObjective-C Bonjour/TCP 堆栈
【发布时间】:2009-07-31 10:40:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch tcp bonjour


    【解决方案1】:

    我会说“自己做”。

    如果您认为问题中列出的要求不会改变,那么简单但经过良好测试的套接字服务器+网络服务实现和套接字+流的包装器就可以了 - 您可能不会甚至需要一个“框架”本身。

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

    【讨论】:

    • 这真的让我朝着正确的方向前进。然后我还在您的 cmets 部分发现了 MYNetwork:bitbucket.org/snej/mynetwork/wiki/Home 基本上可以满足我的所有要求,甚至还带有(可选)通信协议。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      查看适用于 iPhone 的 Apple 的 WiTap 示例应用。您要求的许多结构已经存在于那里。您可以在 iPhone Dev Center 上找到它。

      【讨论】:

        【解决方案4】:

        使用 iPhone 和 OSX 内置的NSNetServices 怎么样?这完成了发布/订阅 Bonjour 服务的所有工作。

        当然,如果您要发布服务,则需要一个与之通信的套接字,并且根据您使用的协议,您处理传入消息的方式(以及是否有响应等)意味着您必须先验地了解该消息传递基础架构是什么。

        如果您甚至懒得写这些,那么通过事实上的无所不包的协议 HTTP 托管一些东西可能是前进的方向。您可以在设备上托管您自己的迷你网络服务器,让 HTTP 请求进行对话。但是服务的实现与该服务的发现是正交的。

        【讨论】:

        • 不是我想的那样。我的意思是某种类/框架可以处理所有 TCP 低级别的东西并将其与 Bonjour 绑定在一起(这真的不是问题,我目前正在使用 NSNetServices)。我仍然会收到原始数据并根据需要做出响应。这个想法只是让框架使用 bonjour 来发现服务器,然后创建一个通信通道,而我不必担心初始化套接字、排队读取它们等等。很有可能存在这样的事情。
        • 对,就像我说的那样——你可以使用 HTTP 服务器来处理协议和通信层,并自行挂钩。 Developer 示例代码中有几个示例,您可以根据这些示例进行调整。
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 这是一个不错的库,但仍然存在相当多的低级问题。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-26
          • 2018-06-25
          • 2010-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多