如何在同一网络中的多个iphone上同步应用程序状态?

时间:2011-05-02 22:07:27

标签: iphone networking sync bonjour multiple-instances

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

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

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

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

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

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

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

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

你会建议哪一个?还是有另一种更好的选择,我没有想到的?

3 个答案:

答案 0 :(得分:2)

你应该看一下GameKit(内置于iOS) - 它们在方便的包装中有你需要的许多机器。您可以轻松地发现网络上的对等体,并轻松地在客户端之间发送数据(广播或点对点)

答案 1 :(得分:1)

根据我的经验,Bonjour非常适合您的需求。有一个很好的教程,附带相关的源代码:Chatty,可以很容易地修改,以满足您的目的。

答案 2 :(得分:0)

我把iphone(没有集中式服务器)的分布式消息总线蹒跚而行,这对于这个很有用。应该注意的是,UI人员把代码弄得一团糟,所以在那里做龙:https://code.google.com/p/iphonebusmiddleware/

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