当前位置: 首页 > 专利查询>之江实验室专利>正文

一种自适应处理网络延时抖动的数据同步方法及装置制造方法及图纸

技术编号:29964146 阅读:40 留言:0更新日期:2021-09-08 09:28
本发明专利技术公开一种自适应处理网络延时抖动的数据同步方法及装置,考虑了服务器和客户端双方的时间线,将服务器某一时刻的数据帧在对应时刻同步到客户端,提高了网络数据同步的精准度;自适应调节主动延时时间,缓解网络延时抖动的影响,增加了数据同步的稳定性;动态查找时间线对齐的客户端数据帧,并且应用插值算法得到平滑的采样结果,避免客户端的数据发生跳动。该方法特别适用于在网络延时和抖动明显的情况下数据的实时同步,且对网络丢包的容忍度较高。度较高。度较高。

【技术实现步骤摘要】
一种自适应处理网络延时抖动的数据同步方法及装置


[0001]本专利技术涉及计算机网络数据同步领域,尤其是涉及一种自适应处理网络延时抖动的数据同步方法及装置。

技术介绍

[0002]计算机网络技术自上个世纪中叶发展至今,已经取得了长足的进步,并且在诸多领域都获得了巨大的成功。其中最具代表性的互联网(Internet)技术更是将分散在全世界的计算设备融为一个有机的整体,实现了资源的全面共享和高效协作。
[0003]要实现网络互联,必然需要在多个计算机之间进行数据传输和同步,尤其在网络条件不佳,例如网络延迟、抖动、丢包等明显的情况下,如何高效精确地同步和插值远端传输过来网络数据变成了一个十分重要的问题。常见的实体状态数据同步算法包括航位推算法和实体插值算法。航位推算法可以根据上一帧实体的姿态和速度信息预测当前的状态,但缺点是仅限于低速运动的场景,如果实体的运动速度很快或者运动状态频繁改变,预测结果就会和服务器不一致,需要进行额外校正;实体插值算法只使用服务器传过来的状态数据进行插值计算,因此准确性相对较高。但是现有的实体插值算法大多不考虑服务器和客户端的时间线对齐,只根据客户端本地数据缓存的大小动态调节插值速度。这样虽然可以让插值结果更加平滑,但同一实体在同一仿真时刻的状态在服务器和客户端可能会有所不同,这对于一些严肃的仿真应用来说是不可接受的。

技术实现思路

[0004]为解决现有技术的不足,实现更好地平衡数据同步的延时性和准确度的目的,本专利技术采用如下的技术方案:
[0005]一种自适应处理网络延时抖动的数据同步方法,包括如下步骤:
[0006]S1,服务器S通过网络向客户端C发送数据包SP,所述数据包SP包括状态数据e和发送时的服务器时间st;
[0007]客户端C将收到的数据包SP经过处理存储到数据帧CP中,并设定客户端的初始主动延时时间为t
delay
=0.1s;
[0008]S2,客户端C维护一个双向队列DQ,用于存储从服务器S接收到的数据,双向队列DQ的最大长度为m,m>=2;对于接收到的第i个数据包SP
i
,其中i∈{0,1,...},包括如下步骤:
[0009]S21,如果i=0,将当前的客户端时间保存到ct0中;
[0010]S22,计算服务器时间差dst
i
=st
i

st0,将dst
i
和数据包SP
i
中的状态数据e
i
存储到数据帧CP
i
中;
[0011]S23,将数据帧CP
i
塞入双向队列DQ的尾部;如果双向队列DQ的当前长度大于m,则弹出双向队列DQ的头部元素;
[0012]S3,客户端C存在一个循环被调用的函数tick,每次调用进行如下处理:查询当前的客户端时间为ct
tick
,计算当前的客户端时间差dct=ct
tick

ct0‑
t
delay
,在双向队列DQ中查
找一个索引位置j,满足条件dst
j
<dct<dst
j+1
,其中j∈{0,1,...m

1},根据查找索引j的情况,执行如下处理:
[0013]S31,如果找到满足条件的索引位置j,则根据索引位置j,通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick

[0014]S32,如果找不到满足条件的索引j,并且dct<dst0,则调整客户端的初始主动延时时间t
delay
,通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick

[0015]S33,如果找不到符合条件的索引j,并且dct>dst
m
‑1,则通过插值方法,调整当前的客户端时间ct
tick
对应的状态数据e
tick

[0016]进一步地,所述S31中,根据索引位置j,计算线性插值系数a=(dct

dst
j
)/(dst
j+1

dst
j
),得到ct
tick
时刻对应的状态数据e
tick
=e
j
*(1

a)+e
j+1
*a。
[0017]进一步地,所述S32中,调整t
delay
=t
delay

(dct

dst0)。
[0018]进一步地,所述S32中,调整ct
tick
时刻对应的状态数据e
tick
,计算线性插值系数a=(dct

dst0)/(dst1‑
dst0),得到当前的客户端时间ct
tick
对应的状态数据e
tick
=e0*(1

a)+e1*a。
[0019]进一步地,所述S33中,调整当前的客户端时间ct
tick
时刻对应的状态数据e
tick
,计算线性插值系数a=(dct

dst
m
‑2)/(dst
m
‑1‑
dst
m
‑2),得到当前的客户端时间ct
tick
对应的状态数据e
tick
=e
m
‑2*(1

a)+e
m
‑1*a。
[0020]进一步地,所述状态数据e包括一组独立的状态向量s1,s2,

,s
n

[0021]进一步地,所述状态向量包括位置pos=(px,py,pz)和旋转四元数quat=(qx,qy,qz,qw)。
[0022]进一步地,所述S3中的插值方法包括线性插值和非线性插值。
[0023]一种自适应处理网络延时抖动的数据同步装置,包括服务器S和客户端C,所述客户端C包括双向队列DQ和循环调用模块tick,循环调用模块tick包括查询模块、计算模块、索引位置查找模块和插值调整模块,循环调用模块tick在被调用时,通过查询模块得到当前的客户端时间ct
tick
,通过计算模块得到当前的客户端时间差dct,通过索引位置查找模块,找到符合条件的索引位置j时,通过插值调整模块,调整当前的客户端时间ct
tick
对应的状态数据e
tick
;没有找到符合条件的索引位置j,且dct<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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
‑<...

【专利技术属性】
技术研发人员:高健健华炜李融谢天
申请(专利权)人:之江实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1