2
回答
关于用C++实现服务器-客户端文件同步的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
近来公司项目要做一个服务器-客户端文件同步的功能,就像浏览器的书签一样,在某台机器上添加了一个书签,用另一台机器打开浏览器能同步下载到某台机器上的书签(前提是登录同一个账户),想实现类似的功能,苦于没什么思路,不知道从何下手,希望做过这方面功能的大神们给个思路,或者说是解决办法。如果能附上源代码,那就最好不过啦!非常感谢
举报
xinzaibing
发帖于6年前 2回/1K+阅
共有2个答案 最后回答: 6年前

刚才洗澡的时候突然想过这个问题,我当时想的是有道笔记和web协作的同步是如何设计的。我的思路是这样的,

1. 每台登录的机器分配一个标识(帐号+resource),这个可以参考XMPP协议里面JID的定义,实现起来也不难。

2. 每次客户端有操作时,服务端记录是哪个时刻哪个客户端的操作,然后更新其它客户端。

  我觉得这需要维护几个链表,一个是服务器的,剩下的是客户端的。凡是客户端的操作,服务器都需要记录,但每个客户端的操作情况却不一样,所以需要给每个客户端维护一个链表,当客户端登录的时候就参考服务端的链表进行同步。

3. 如果是C/S架构,多个客户端又是和服务端连接,就是socket通信问题了,B/S架构就只有使用Ajax长连接轮询。

--- 共有 2 条评论 ---
liange@xinzaibing : 在刚才的回答里面,提到了如何同步,有兴趣可以加QQ聊:376993313 6年前 回复
xinzaibing是C/S架构的,我觉得最重要的问题就是怎么辨别服务器上的文件是否和客户端的一致的问题,然后要怎样一个同步流程 6年前 回复

以下是假设同一时间内只有一个帐户登录的

1.服务端维护每个帐户的文件版本信息,至少包含账号,最后修改时间,修改次数、

2.客户端登录时从服务端下载该账号的文件版本信息,与本地账户的版本信息比较。比较的条件根据实际情况来。无外乎三种情况,服务器比客户端新(客户端没有记录就是第一次记录,全量更新),一致或者旧。那么就更新服务端或者客户端,怎么更新根据实际情况来。

这个完全可以参考SVN等版本管理工具的思路。关键是你怎么判断文件是否一致,修改时间,大小,MD5?

顶部