我有两台可以通过串行连接相互通信的计算机。连接是通过无线网络进行的。两个系统之间的通信存在可变的、不断变化的延迟。在这两个系统上,我都有一个计数器运行时间,每毫秒递增 1。它们都在应用程序启动后立即启动。假设每台计算机在不同的时间启动。我如何与串行连接同步计数器,以便 systemA.counter 等于 systemB.counter 并且两个计数器同时增加(或尽可能接近)。
理想情况下,一旦同步,计数器只会慢慢地分开,以便每 3 或 4 千英寸我可以重新同步一次。
我正在寻找有关该主题的良好资源,例如算法、示例代码 (c/c++),以及任何可以为我指明正确方向的东西。
更新
这是一个封闭的系统,没有互联网。出于所有意图和目的,除了通过无线链路打开串行线路之外,根本没有真正的协议。目前该链接是蓝牙,但我正在考虑将其移至 ZigBee Mesh。当前有 2 个节点,但如果我有 30 个节点都运行同一个应用程序,我希望它们全部同步。没有指定客户端/服务器,只有几个设备运行带有计数器的相同程序。我无法访问时间之类的东西,只有这个每毫秒递增一次的计数器以及我可以使用的任何算法。
一旦我能做到这一点,我想建立一个建议和映射系统,但要弄清楚节点之间的距离,我需要在设备上同步启动时间。