如何在Wi-Fi中的设备之间同步数据

Luk*_*ger 11 java android zeromq ios

我正在为iOS和Android开发应用程序.基本功能是在没有中央服务器的情况下,在Wi-Fi网络中的所有设备之间保持一定数据集同步.每个设备都可以修改该组数据.

目前的方法是通过Bonjour/Zeroconf发现其他设备,然后通过ZeroMQ向所有设备发送"更改消息".

由于两个框架都会导致很多问题的实现,我想问这是否是实现这一目标的正确方法.

我将大部分用Bonjour和HTTP-Requests实现的逻辑发送到所有设备.问题只是网络请求,即使经过三次尝试也无法收到,因为网络出现故障.我希望对一般状态或更可靠的消息传递框架进行某种重构.

某种Gossip方法是否可以传播信息以及发现所有设备更好?

use*_*197 6

简单的方案不能满足所有要求.

既不是成为按需服务器的临时角色不对称,也无法像"调查(每个人投票)"那样决定变更(图-s 礼貌性的nanomsg.org)

调查/投票模式

"总线模式"中的节点联盟角色对称 总线/路由模式 满足所有要求.


连续发现"阶段"

是一项作为连续自我识别操作的任务,以便为节目联盟提供相关的信息集,供他们在投票期间等待,而不是为谁投票.相反,当广播< aListITEM >改变并且期望投票得到它的节点联盟"邻居"支持时是公平的.

Pieter Hintjens的400多页书籍ZeroMQ指南 - 适用于Python开发人员,第8.3章将为您提供有关自主抢先和/或合作发现的初步见解,以及前面章节中有关WiFi的一些评论.另请注意关于ISO-OSI-L2/L3不确定性的结束语>>> 基于WiFi SSID L3 ARP的发现限制


< aListITEM >的方法改变当前联盟节点的传播

只是要在节点联盟内实现的另一个子协议(层).

子协议

公共汽车或具有"调查"投票的混合可扩展正式通信模式是否满足所有要求?

可能是,可能不是.

首先列出能够设计"反对"这样一个强制性功能集的所有要求.

其次,验证功能集对于每个节点是合法且可行的,它将动态地变为/不再是节点联盟的成员.

第三,设计的无阻塞,自恢复社区-一个高阶-FSA-的-FSA的 -与适当的信号交换,再同步/看门狗/的<超时(S)和传播aListITEM >更新与投票机制,使这些符合强制性设计功能集.

不要依赖于现成的原语(在"弯曲"强制性设计的功能集,以满足图书馆可用原始,但成本相当发展的另一个,一个新的,更高阶的正式沟通模式信令,从库组装原语,使其符合整个规范.)


sco*_*ttt 1

让客户端-服务器的东西可靠地工作可能是相当具有挑战性的。尤其是跨平台;似乎总是还有一种边缘情况需要解决。我建议使用现有的库,而不是重新构建轮子,其他人已经解决了所有问题。我还没有将它用于原型以外的任何用途,但AllJoyn 开源项目看起来非常有前途。另一个选择是Google Nearby API,目前仅适用于 Android 和 iOS。