java如何测量服务器和客户端之间的延迟

时间:2015-11-09 22:15:38

标签: java android network-programming

我有一个Android应用程序,我想发送一些命令(通常是整数)给一些客户端(他们也在java和#)。重要的是测量发送命令和接收消息之间的延迟时间(在客户端)。该应用程序将分享当前音乐时间给所有客户,他们应该播放它同时(同步!!)。你的想法是什么?

再次感谢你:)

2 个答案:

答案 0 :(得分:0)

在发送您的请求并获取最新信息之前,我无法理解其中的难点,获取当前时间戳 (1)(以毫秒为单位)从服务器收到响应时,时间戳(2)

然后执行(2) - (1),您就会有延迟。

但很多因素需要处理,如网络信号强度。

答案 1 :(得分:0)

如果不是不可能的话,你要求的是很难实现的。在分布式系统中,除非您在所有设备中都有原子钟,或者您接受设备之间的某些漂移,否则不可能认为所有时钟都是同步的。

您无法将服务器中设置的时间戳与客户端中设置的时间戳进行比较。此外,您无法确保所有设备同时收到消息,实际上他们不会。

衡量消息所用时间的唯一方法是确定往返时间,因为在这种情况下,您使用的是同一节点/设备的时钟。然后将roun-trip时间除以2,以估计消息到达目的地所需的时间。正如你可能想的那样,它根本不准确。消息到达目的地的时间也总是与以前的不同。

另一种方法是,如果您接受时钟漂移小于1秒,则使用网络时间协议(NTP)来同步所有时钟。

如果您希望许多设备在同一时间播放歌曲,则不应依赖网络时间,而是以不同的方式同步设备。例如,只是想一想,设备可以处理其他设备产生的声音并根据它同步(是否有专利?)。