2016-07-20 20 views
1

クライアントにはWebサーバーのIPアドレスの束があります。私の仕事は、クライアントとこれらのサーバのそれぞれとの間の接続品質をチェックし、最も遅い待ち時間を持つものを選択することです。クライアントとサーバー間の接続品質をテストする最良の方法

私の頭に入った最初のアイデアは、java.net.Socketクラスを使用してTCP接続を確立し、時間を測定することでした。しかし、私はそれがこの作業を解決する最良の方法であるとは確信していません。

だから、私の質問は以下のとおりです。

1)java.net.Socket適切な解決策を使用していますか?

2)答えが肯定的な場合は、接続を1回だけ行うか、2-3回平均して平均時間を取るべきですか?

3)答えが否定的な場合は、Javaから適切な方法は何ですか?

答えて

2

1)私は、おそらくあなたがとにかく使用しようとしているjava.net.URLから入手することができjava.net.URLConnectionを使用することをお勧めし、オーバーシュートとなりjava.net.Socketを使用して言うと思います。

3)あなたは、あなたが持っているサーバと同じ数のURLインスタンスを作成openConnectionメソッドを介してそれらのそれぞれからURLConnectionを取得し、それにかかる時間を測定し、そのconnectionメソッドを呼び出すことができます。

これは純粋なネットワーク遅延を測定するだけでなく、各サーバーの処理時間を測定するだけでなく、その日の終わりにコンテンツ全体をダウンロードしています。ある意味では、それぞれのサーバーが現在ロードされている状態も測定しています。これは、コンテンツがある種のアプリケーションによって生成され、静的ページを提供する純粋なWebサーバーだけでなく、重要な場合もあります。

このようなことをすれば、毎回別のスレッドでこのプロセスを実行することをお勧めします。そうすれば、メインスレッドは毎時最高のサーバーとみなされます。

純粋なネットワーク待ち時間の問題がある場合は、プレーンソケットを使用する方がはるかに優れた単純な解決策になります。

2)はい、純粋なネットワーク遅延の場合は平均2-3接続が意味がありますが、URLConnectionソリューションを使用すると負荷が高くなります。

私はそれが役に立ちそうです。

関連する問題