测量消息传输速度

时间:2012-04-08 14:29:51

标签: java time

我正在制作网络应用程序,我想显示从发件人到收件人的邮件所需的时间。

您认为哪些方式适合实施此功能?

我所想的是将当前时间存储在消息上并与接收器端的时间进行比较。虽然在java doc上它表示当前给出的时间可能因操作系统而异。

  

我应该如何获得当前时间,以便在每个操作系统上都相同?   (或只是OSX和胜利)

p.s:在大多数情况下,应用程序只是发送消息而不是期待某些东西。

5 个答案:

答案 0 :(得分:3)

除非源和目标同步到同一时间源,否则如果源和目标位于不同的时区并且您使用本地时间,系统时间可能相差几秒,甚至几个小时。

您可以做的是衡量从发送数据包到收到回复的时间。这不是100%安全,因为两个数据包可以通过两条不同的路径。

答案 1 :(得分:2)

最好的方法是使用NTP(网络时间协议)服务器来同步两台计算机上的时间。您还可以从应用程序中查询NTP服务器并获取正确的时间,然后可以将其用于计算。

答案 2 :(得分:0)

如果接收者是要求提供消息的接收者,那么您可以记录请求的确切时间以及消息何时返回。它们之间的区别在于您正在寻找的结果。

答案 3 :(得分:0)

约阿希姆是对的。除非两台机器的时钟与可靠的时钟同步,否则您没有太多机会测量点对点消息所需的时间。

你最好测量往返时间;即发送消息和接收回复之间经过的时间。您可以使用未与任何外部源同步的时钟来测量此值。

答案 4 :(得分:0)

TDOA(抵达时差)可能是您最准确的赌注。它不需要在两台主机之间进行时间同步,仍然可以为您提供非常准确的RTT。

您基本上可以测量4次不同的时间:

x1 = sender send time
y1 = receiver receive time
y2 = receiver send time
x2 - sender receive time

所以你可以通过基本上减去接收器(y)的处理时间来计算RTT:

x2 - (y2 - y1) - x1

对于java中最精确的当前时间,请使用System.nanoTime();