如何计算游戏客户端与服务器之间的时间延迟?

很显然客户端和服务器都有各自的本地时钟,通过他们的本地时钟比较是没有任何意义的。

那我们如何计算客户端与服务器之间的时间延迟呢?这里有一个比较简单的方法,那就是通过发数据包测量。

首先,我们先来梳理下数据包发送的整个流程:

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 + TB2) / 2

可是实际上A和B之间是有时间差X的,于是 TB + X = (TA1 + TB2)/ 2

        整理后可得X = (TA1 + TB2)/ 2  - TB

        

        OVER~~~

你可能感兴趣的:(如何计算游戏客户端与服务器之间的时间延迟?)