很显然客户端和服务器都有各自的本地时钟,通过他们的本地时钟比较是没有任何意义的。
那我们如何计算客户端与服务器之间的时间延迟呢?这里有一个比较简单的方法,那就是通过发数据包测量。
首先,我们先来梳理下数据包发送的整个流程:
1)客户端A先记录自己的本地时间TA1,然后给服务器发B发送一个报文。
2)服务器B收到报文之后,记录自己的本地时间TB,然后把TB放入报文里发送给客户端A。
3)客户端A收到信息之后,记录下收到报文的时间TA2.
由于报文往返的时间是相等的,所以客户端发送给服务器的时间延迟P = (TA2 - TA1)/ 2
一般,P只计算一次是不够精确的。我们可以让客户端A定时的给服务器B发送测量信息,然后计算P的平均值。
这个平均值就是我们想要获取的时间延迟了。
另外如果我们想要知道客户端和服务器的本地时间差,可以怎么获取呢?
这个也是可以通过公式计算出来的
我们可以先假设A和B的本地时钟是一样的(当然这个假设明显不成立),那么
TB = TA1 + P ,把上面的P套入公式,整理后可以得TB = (TA1 + TA2) / 2
可是实际上A和B之间是有时间差X的,于是 TB + X = (TA1 + TA2)/ 2
整理后可得X = (TA1 + TA2)/ 2 - TB
OVER~~~