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

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

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

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

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~~~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值