如何计算客户端/服务器时间间隔?

问题描述:

我正在开发客户端/服务器软件,并且正在寻找让我的客户端时钟与服务器时钟保持同步的最佳方式。如何计算客户端/服务器时间间隔?

当然,我不能使用NTP,因为我不想触摸系统时钟。我只是想计算timegap这样我就可以把它添加到从服务器接收到的每一个日期时间把它转换成一个“本地时间”

我因为知道做的是:

  • 我使用GMT时间处理TimeZone问题

  • 服务器在连接时向客户端发送当前时间,并且客户端从其时间减去服务器时间以计算时间间隔。

这个伟大的工程,当网络延迟是恒定的(读“我的网络” ...)

不幸的是,我希望我的软件在互联网上工作,甚至在移动客户端,这是我我们目睹了1分钟内差距达到

对于我正在处理的软件,这样的延迟是不可接受的。

什么是计算客户端/服务器时间间隔的好策略?


最后一件事:我可以给两个单向消息(客户机到服务器和服务器到客户端)

这也许无关紧要,但是这背后的技术是利用一些的httpbinding一个.NET WCF客户端轮询

您可以定期ping服务器来计算延迟。我不认为你可以通过互联网真正接近。

为什么你不能使用NTP?当然默认的ntp是设置系统时间,但这不是强制性的:

$ ntpdate -q ntp.ubuntu.com 
server 91.189.94.4, stratum 2, offset -0.102597, delay 0.05426 
2 Mar 11:44:36 ntpdate[12239]: adjust time server 91.189.94.4 offset -0.102597 sec