Java:有人知道一个可以检测互联网连接质量的库吗?

时间:2010-03-15 23:31:26

标签: java networking monitoring

我知道谷歌的简单URLConnection可以检测我是否连接到互联网,毕竟我相信互联网一切都很好如果我不能连接到谷歌。但是我现在正在寻找的是一个可以衡量我与互联网连接效率的库,以及 BOTH 响应能力和可用带宽。 但是,我不想测量可用的带宽,因为资源过于密集。我真的只需要能够测试是否能够在Y时间内收到类似X kB的东西。这样的图书馆是否已经存在?

3 个答案:

答案 0 :(得分:2)

真的不可能判断这一点。在今天的ADSL 2+世界中,下载速度为20多Mb / s,你很大程度上取决于你上游的一切速度。例如,如果你要连接到另一个国家的网站,主要的瓶颈可能就是国际链接。如果您连接到同一个城市的站点,那么您可能受限于该服务器的上行速度(例如,它们可能是10MB / s,并且它们将同时为很多人提供服务)。

所以“我可以在最多Y秒内收到X KB”这个问题的答案完全取决于您从中下载的 。因此,回答这个问题的最好方法是实际从您计划下载的地方开始下载,然后计时。

就响应性而言,它基本上是同一个问题。你可以对有问题的服务器进行ICMP ping,但是很多服务器都会有防火墙丢弃ICMP数据包而不回复,所以它并不准确(此外,如果然后ping远小于~100ms那么对延迟的最大贡献可能来自从服务器的内部处理,而不是实际的网络,这意味着ICMP ping无论如何都是无用的。)

一般来说网络特征也是如此 - 特别是互联网(因为它太复杂了) - 你无法可靠地测量关于网站X的任何信息并推断出有关网站Y的任何信息。如果你想知道网站有多快会回复,然后你只需要连接到网站Y并开始下载。

答案 1 :(得分:0)

计算用户在给定时间内可靠地下载给定位数的能力可能很复杂 - 但您可以从http://commons.apache.org/net/处找到的一些代码开始。无论如何,这可以告诉你延迟和带宽。

答案 2 :(得分:0)

在你测量之后,答案可能是错误的一毫秒(替换任何其他时期)。

查看任何为您提供“下载剩余时间”数字的应用程序。请注意,它通常是错误的和/或不断更新,并且只在最后一秒变得准确。

基本上,在任何相当复杂的网络(例如互联网)上,如此大的变化是不可避免的,唯一真正的衡量标准只有在事后才可用。