offset是两个设备间的时钟差:
~~~~~~
A的手表是00:00:00
~~~~~~
B的手表是00:00:01
~~~~~~
则offset是1s
A在T1 = a的时候发送信息,此时B时间显示是a + offset
信息传输需要delay的时间,
B收到信息时T2 = a + offset + delay
则T1 = a;
T2 = a + offset + delay;
B在T3 = b的时候发送信息,此时A时间显示是b - offset
信息传输需要delay的时间,
A收到信息时T4 = b - offset + delay
则T3 = b;
T4 = b - offset + delay;
所以: T2 - T1 = delay + offset
~~~~~~~~~~~
T4 - T3 = delay - offset
所以:offset = [ (T2 - T1) - (T4 - T3) ] / 2
~~~~~~~~~
delay = [ (T2 - T1) + (T4 - T3) ] / 2
eg:offset = 1s, delay = 5s
A手表时间 | B手表时间 | |
---|---|---|
A发送 | T1 = 0s | 1s |
B接收 | 5s | T2 = 6s |
B发送 | 9999s | T3 = 10000s |
A接收 | T4 = 10004s | 10005s |
可以得到:
~~~~
T1 = 0
~~~~
T2 = 6
~~~~
T3 = 10000
~~~~
T4 = 10004
使用以上公式:
~~~~
offset = 1
~~~~
delay = 5