我有三台机器A, B, C
通过以太网连接。 A
将发送UDP数据包到B
,这将转发到C
。我想要可靠地测量传播时间。假设三台机器使用本地NTP server
进行时间同步。可靠地比较不同机器在C++中的时间戳
在C++
中生成时间戳的最佳方式是什么?我目前的猜测是chrono
。我理解它的方式是它的high_resolution_clock
在这里没有问题,因为它可以使用像每个操作递增的CPU寄存器之类的东西。因此,这取决于机器启动的时间而变化很大。相反,我将与steady_clock
一起使用,这将使用同步的系统时间,但希望可以防止我遇到像闰秒这样的事情,如果我使用system_clock
时会出现问题。
我对这些假设是否正确?有没有更好的方法来做到这一点?
您定位的是哪个操作系统/工具链? – user4581301
Linux(一些Ubuntu变体),事情使用boost :: asio发送出去。每当有东西被发送时,源将记住它发送该数据包的时间戳。水槽将记住到达的时间戳。这两个数据都会周期性地发送。 – kunterbunt
忽略闰秒。如果您发现在测量过程中或测量周围发生闰秒,请放弃该测量。要处理最多六个月发生的事件,要比特殊情况要容易得多。 – user4581301