两台设备时间同步round trip latency (RTT)方式介绍

ProudNet 2016-05-19 03:25:09
在游戏开发过程中,会发现很多时候需要两台设备间时间同步进行的情况。

一般情况下,两台设备间时间同步使用round trip latency (RTT)方式

假设有A,B两台设备。

A->B:发送A的系统时间 [1]

B->A:直接发送 [1]

在A中,A的系统时间减去[1]的时间就可以获得RTT.

A->B:发送RTT[2]和A的现在时间[3]。

以上操作即可。

假设在B中想得到A的现在时间,计算方法是->A的现在时间=[3]+[2]/2.

NTP也与以上方式类似。

通过网络特征来看,因为RTT测定一次无法确定准确性,所以RTT的每次测定都会稍有偏差。

无线网络环境下,会发生更大的变化只有反复测定后取平均值才会更加准确。

想了解更多平详情可参考 ProudNet www.Proudnet.com.cn 网站中提供了多种时间同步函数。

```

CNetClient.GetIndirectServerTimeMs

CNetClient.GetP2PServerTimeMs

CNetClient.GetServerTimeMs

```

ProudNet不仅仅是对服务器,还有P2P连接的其他客户端获取RTT的功能。

只需要运用CNetClient和CNetServer中的GetLastPing和GetRecentPing。
...全文
1136 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,584

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧