【技术实现步骤摘要】
一种自适应处理网络延时抖动的数据同步方法及装置
[0001]本专利技术涉及计算机网络数据同步领域,尤其是涉及一种自适应处理网络延时抖动的数据同步方法及装置。
技术介绍
[0002]计算机网络技术自上个世纪中叶发展至今,已经取得了长足的进步,并且在诸多领域都获得了巨大的成功。其中最具代表性的互联网(Internet)技术更是将分散在全世界的计算设备融为一个有机的整体,实现了资源的全面共享和高效协作。
[0003]要实现网络互联,必然需要在多个计算机之间进行数据传输和同步,尤其在网络条件不佳,例如网络延迟、抖动、丢包等明显的情况下,如何高效精确地同步和插值远端传输过来网络数据变成了一个十分重要的问题。常见的实体状态数据同步算法包括航位推算法和实体插值算法。航位推算法可以根据上一帧实体的姿态和速度信息预测当前的状态,但缺点是仅限于低速运动的场景,如果实体的运动速度很快或者运动状态频繁改变,预测结果就会和服务器不一致,需要进行额外校正;实体插值算法只使用服务器传过来的状态数据进行插值计算,因此准确性相对较高。但是现有的实体插值算法大多不考虑服务器和客户端的时间线对齐,只根据客户端本地数据缓存的大小动态调节插值速度。这样虽然可以让插值结果更加平滑,但同一实体在同一仿真时刻的状态在服务器和客户端可能会有所不同,这对于一些严肃的仿真应用来说是不可接受的。
技术实现思路
[0004]为解决现有技术的不足,实现更好地平衡数据同步的延时性和准确度的目的,本专利技术采用如下的技术方案:
[0005]一种自适 ...
【技术保护点】
【技术特征摘要】
1.一种自适应处理网络延时抖动的数据同步方法,其特征在于包括如下步骤:S1,服务器S向客户端C发送数据包SP,所述数据包SP包括状态数据e和发送时的服务器时间st;客户端C将收到的数据包SP存储到数据帧CP中,并设定客户端的初始主动延时时间t
delay
;S2,客户端C维护双向队列DQ,用于存储从服务器S接收到的数据,双向队列DQ的最大长度为m,m>=2;对于接收到的第i个数据包SP
i
,其中i∈{0,1,...},包括如下步骤:S21,如果i=0,将当前的客户端时间保存到ct0中;S22,计算服务器时间差dst
i
=st
i
‑
st0,将dst
i
和数据包SP
i
中的状态数据e
i
存储到数据帧CP
i
中;S23,将数据帧CP
i
塞入双向队列DQ的尾部;如果双向队列DQ的当前长度大于m,则弹出双向队列DQ的头部元素;S3,客户端C查询当前的客户端时间为ct
tick
,计算当前的客户端时间差dct=ct
tick
‑
ct0‑
t
delay
,在双向队列DQ中查找索引位置j,满足条件dst
j
<dct<dst
j+1
,其中j∈{0,1,...m
‑
1},根据查找索引j的情况,执行如下处理:S31,如果找到满足条件的索引位置j,则根据索引位置j,通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick
;S32,如果找不到满足条件的索引j,并且dct<dst0,则调整客户端的初始主动延时时间t
delay
,通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick
;S33,如果找不到符合条件的索引j,并且dct>dst
m
‑1,则通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick
。2.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S31中,根据索引位置j,计算线性插值系数a=(dct
‑
dst
j
)/(dst
j+1
‑
dst
j
),得到ct
tick
时刻对应的状态数据e
tick
=e
j
*(1
‑
a)+e
j+1
*a。3.根据权利要求1所述的一种自适应处理网络延时抖动的数据同步方法,其特征在于所述S32中,调整t
delay
=t
delay
‑
(dct
‑<...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。