インターネット接続の品質を分析するアプリを開発しており、その一部としてパケット損失を測定しています。
パッケージを IP アドレスに送信することを考えていましたが、どのようにメッセージを送信し、それらが戻ってくることを確認できますか? 返信を促すパッケージを送信する必要があると思いますが、検索または Google を使用してその例を見つけることができません。
または、既存のトラフィックを使用する必要がありますか (どのように?)?
それに加えて、往復時間をどのように測定しますか?
インターネット接続の品質を分析するアプリを開発しており、その一部としてパケット損失を測定しています。
パッケージを IP アドレスに送信することを考えていましたが、どのようにメッセージを送信し、それらが戻ってくることを確認できますか? 返信を促すパッケージを送信する必要があると思いますが、検索または Google を使用してその例を見つけることができません。
または、既存のトラフィックを使用する必要がありますか (どのように?)?
それに加えて、往復時間をどのように測定しますか?
TCP は信頼性の高いトランスポートであるため、ドロップされたパケットは表示されません。Linux では、ifconfig を使用して、発生した再送信の回数を確認できます。Android でこれを表示するコマンド ライン ツールはわかりませんが、この情報を表示するにはシステム ツールを使用する必要があります。
ところで、UDP パケットを使用してパケット損失を見積もることができます。UDP と TCP のパケット損失率は同じではありませんが、アイデアが得られます。
TCP パケットの損失を簡単に確認できないため、これには UDP または ICMP (ping) を使用する必要があります。
ICMP を使用する場合は、反対側のコンピューターが ICMP に応答することを確認する必要があります。多くの場合、ファイアウォールは ICMP をブロックします。
UDP を使用する場合、他のコンピュータには、パケットを認識してできるだけ早く応答できるサーバー ソフトウェアが必要になります。このための最も単純なタイプのサーバーは、エコー サーバーと呼ばれます。
Java UDP エコー サーバーは次のとおりです。
往復時間は、パケットを送信してからその送信に対する応答を受信するまでの差をとることで測定できます。ラウンドトリップ時間を処理時間で汚染しないように、プロトコルは簡単なものにする必要があります。