测试客户端和服务器之间连接质量的最佳方法

时间:2016-07-20 10:55:00

标签: java networking network-programming

客户端有一堆Web服务器的ip地址。我的任务是检查客户端和每个服务器之间的连接质量,并选择哪个具有最低延迟。

我想到的第一个想法是使用java.net.Socket类建立tcp连接并测量时间。但我不确定这是解决这项任务的最佳方法。

所以,我的问题是:

1)正在使用java.net.Socket正确的解决方案吗?

2)如果答案是肯定的,我应该只进行一次连接还是2-3次获得平​​均时间?

3)如果答案是否定的,那么从Java做到这一点的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

1)我说使用java.net.Socket会超调,或许最好使用java.net.URLConnection可以从您将要使用的java.net.URL获得反正。

3)您可以创建与您拥有的服务器一样多的URL个实例,通过URLConnection方法从每个实例获取openConnection,然后调用其connection方法测量所需的时间。

这不仅可以测量纯网络延迟,还可以测量每台服务器的处理时间,在一天结束时,您正在下载整个内容。在某种程度上,您还要测量每个服务器目前的加载方式。如果内容是由某种应用程序生成的,而不仅仅是提供静态页面的纯Web服务器,那么这可能很重要。

如果你这样做,我会建议你不时地在一个单独的线程中进行这个过程,这样主线程就会随时使用任何服务器。

如果这是纯网络延迟的问题,那么使用普通套接字将是一个更好,更简单的解决方案。

2)是的,我认为平均2-3个连接在纯网络延迟的情况下是有意义的,但是当使用URLConnection解决方案时,它会增加太多的负载。

我希望它有所帮助。