我想知道如何在运行时最好地测量网络吞吐量。我正在编写一个客户端/服务器应用程序(都在 java 中)。服务器定期通过套接字向客户端发送消息(压缩媒体数据)。我想调整服务器使用的压缩级别以匹配网络质量。
所以我想测量一大块数据(比如 500kb)完全到达客户端所需的时间,包括中间的所有延迟。Iperf 之类的工具似乎不是一种选择,因为它们通过创建自己的流量来进行测量。
我能想到的最好的主意是:以某种方式确定客户端和服务器的时钟差异,包括服务器发送每条消息的时间戳,然后让客户端向服务器报告此时间戳与客户端收到的时间之间的差异信息。然后,服务器可以确定消息到达客户端所用的时间。
有没有更简单的方法来做到这一点?有没有这方面的图书馆?