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

时间:2009-03-02 10:30:54

标签: client-server ntp

我正在开发一个客户端/服务器软件,我正在寻找使客户端时钟与服务器时钟保持同步的最佳方法。

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

我知道的是:

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

  • 服务器在连接时将其当前时间发送给客户端,客户端从计算时间差的时间中减去服务器时间。

当网络延迟不变时,这很有用(读作“我的局域网”......)

不幸的是,我希望我的软件可以在互联网上运行,甚至在移动客户端上运行,我已经目睹了滞后变化,最多 1分钟。

对于我正在研究的软件,这种滞后是不可接受的。

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


最后一件事:我可以双向发送消息(客户端到服务器和服务器到客户端)

这可能是无关紧要的,但这背后的技术是.net WCF客户端使用带有一些轮询的httpbinding

2 个答案:

答案 0 :(得分:1)

为什么不能使用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

答案 1 :(得分:0)

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