如何使用c ++将两台计算机的时钟相互同步

时间:2013-10-17 07:22:46

标签: c++ linux windows algorithm

我有两台计算机说A和B.我需要确保它们彼此精确同步(在ms的范围内)。一台计算机是Windows基础,另一台是Linux。它们通过以太网直接相互连接(一台计算机的电缆连接到另一台)。我可以为每个人编写C / C ++代码。

如何让它们彼此同步y并注意到Windows和Linux都不是实时系统,因此您不知道通过以太网发送的数据包需要多长时间才能被另一方接收,所以您不能弥补它。由于您需要ms的准确度,因此这种延迟非常重要。

有没有可以做到这一点的算法?

Windows / Linux中是否有任何可以发送的功能,以确保当您通过以太网发送数据时,它会立即传递给另一方?

2 个答案:

答案 0 :(得分:4)

在两台机器之间同步一个时钟并不是一件容易而轻而易举的事。

一种已知的下降准确度方法是Marzullo's Algorithm

答案 1 :(得分:0)

有三种基本方法可以做到这一点比其他方法更复杂,但都使用基于本地时钟偏移时序的基本规则。这3个是RBS,TPSN和FTSP,通用规则考虑每个层的任何延迟,同步方案有四个基本的数据包延迟组件:发送时间,访问时间,传播时间和接收时间,请参阅http://www.cs.wustl.edu/~jain/cse574-06/ftp/time_sync/index.html