2

我正在开发一个 iPhone 应用程序,它允许基本上点击一系列操作。这些系列是预定义的,并与通用配置服务器同步。

该应用程序可能同时在多个设备上运行。假定所有设备都定义了相同的一系列操作。所有设备都被认为是平等的,没有服务器和多个客户端或类似的东西。

(仅)一个人在任何给定时间使用其中一个设备,但是该人有可能在任何给定时间切换到不同的设备。所有“被动”设备都需要与主动设备同步,以便它们显示相同的动作。

整个事情应该尽可能地自动发生。不选择设备、配置,同一网络中的所有设备都参与同一系列动作。

一个额外的要求是设备可以在演示(一系列动作)期间加入,并且需要跳转到当前活动的动作。

现在,我看到了两个选项来实现其中的网络/通信部分:

  • 你好。我已经实现了一个工作原型,它可以自动与网络中的一 (1) 个其他设备连接并与之通信。在这一点上,我不确定“多设备”要求有多少额外的工作。我是否必须为每个设备打开一组连接并手动将同步事件发送给所有设备?有没有更好的方法或者 bonjour 提供什么来帮助我解决这个问题?鉴于我想与网络中的每台设备进行通信,Bonjour 提供了什么?

  • 使用 AsyncUdpSocket 进行多播。只需定义一个端口并将多播同步事件发送到该端口即可。我想与使用 tcp 的 bonjour 相比,主要问题是连接不安全并且数据包可能会丢失。但是,如果这确实是一个问题,那么这是在一个低流量的私有、受保护的 wlan 网络中。还有其他我没有看到的缺点吗?因为在这一点上这听起来是一个相对简单的选择......

你会推荐哪一个?还是有其他更好的选择,我没有想到?

4

3 回答 3

2

您应该查看 GameKit(内置于 iOS)——它们在一个方便的包中提供了很多您需要的机器。您可以轻松发现网络上的对等点,并轻松在客户端之间来回发送数据(广播或点对点)

于 2011-05-16T19:02:03.533 回答
1

根据我的经验,Bonjour 非常适合您想要的东西。有一个带有相关源代码的优秀教程:Chatty,可以轻松修改以适合您的目的。

于 2011-05-16T18:58:25.613 回答
0

我为 iphone 搭建了一个分布式消息总线(没有集中式服务器),它非常适合这个。应该注意的是,用户界面的人把代码弄得一团糟,所以那里是龙:https ://code.google.com/p/iphonebusmiddleware/

基本思想是使用 bonjour 形成一个有领导选举的网络。领导者成为所有奴隶订阅感兴趣主题的枢纽。然后,发送到给定主题的任何消息都会传递到订阅该主题的每个节点。主节点断开简单意味着重新启动领导者选举过程。

于 2011-05-19T14:05:56.310 回答