2016-07-20 13 views
1

Der Client hat eine Reihe von IP-Adressen von Webservern. Meine Aufgabe ist es, die Verbindungsqualität zwischen Client und jedem dieser Server zu überprüfen und auszuwählen, welche die geringste Latenz hat.Der beste Weg, um die Verbindungsqualität zwischen Client und Server zu testen

Die erste Idee, die in meinen Kopf kam, war TCP-Verbindung mit java.net.Socket Klasse zu etablieren und die Zeit dafür zu nehmen. Aber ich bin mir nicht sicher, dass es der beste Weg ist, diese Aufgabe zu lösen.

Also, meine Fragen sind:

1) java.net.Socket eine richtige Lösung verwendet?

2) Wenn die Antwort positiv ist, sollte ich nur eine Verbindung oder 2-3 und die durchschnittliche Zeit bekommen?

3) Wenn die Antwort negativ ist, was ist der richtige Weg, um es von Java aus zu tun?

Antwort

2

1) Ich würde sagen mit java.net.Socket wäre überschießen, vielleicht ist es besser, die java.net.URLConnection, die von der java.net.URL, die Sie sowieso verwenden können, erhalten können.

3) Sie können so viele URL Instanzen als Server erstellen Sie haben, erhalten die URLConnection von jedem von ihnen über die openConnection Methode und dann seine connection Methode aufrufen, um die Zeit gemessen wird, nimmt.

Dies würde nicht nur die reine Netzwerklatenz messen, sondern auch die Verarbeitungszeit in jedem der Server, am Ende des Tages, Sie laden den gesamten Inhalt. In gewisser Weise messen Sie auch, wie viel der jeweilige Server momentan geladen hat. Dies kann wichtig sein, wenn der Inhalt von irgendeiner Art von Anwendung erzeugt wird und nicht nur von einem reinen Webserver, der statische Seiten bereitstellt.

Wenn Sie so etwas tun, würde ich empfehlen, diesen Prozess in einem separaten Thread ab und zu zu tun, so dass der Haupt-Thread jeden Server verwendet, der in jedem Moment als der beste gilt.

Wenn es sich um eine reine Netzwerklatenz handelt, wäre die Verwendung eines einfachen Sockets eine viel bessere und einfachere Lösung.

2) Ja, ich denke, dass durchschnittlich 2 - 3 Verbindungen bei reiner Netzwerklatenz sinnvoll sind, aber bei Verwendung der URLConnection Lösung würde es zu viel Last hinzufügen.

Ich hoffe es hilft.