1

我想知道如何在运行时最好地测量网络吞吐量。我正在编写一个客户端/服务器应用程序(都在 java 中)。服务器定期通过套接字向客户端发送消息(压缩媒体数据)。我想调整服务器使用的压缩级别以匹配网络质量。

所以我想测量一大块数据(比如 500kb)完全到达客户端所需的时间,包括中间的所有延迟。Iperf 之类的工具似乎不是一种选择,因为它们通过创建自己的流量来进行测量。

我能想到的最好的主意是:以某种方式确定客户端和服务器的时钟差异,包括服务器发送每条消息的时间戳,然后让客户端向服务器报告此时间戳与客户端收到的时间之间的差异信息。然后,服务器可以确定消息到达客户端所用的时间。

有没有更简单的方法来做到这一点?有没有这方面的图书馆?

4

1 回答 1

1

一个简单的解决方案:

在发送定义数量的包裹之前,在服务器上保存一个时间戳。

然后将包发送给客户端,并让客户端在收到最后一个包后向服务器报告。

客户端应答后,在服务器上保存一个新的时间戳。

您现在需要做的就是确定 RTT 并从两个时间戳之间的差异中减去 RTT/2。

这应该可以让您获得相当准确的测量结果。

于 2011-10-23T20:00:16.390 回答