実行時にネットワークスループットを最適に測定する方法を考えています。私はクライアント/サーバーアプリケーションを書いています(両方ともJavaで)。サーバーは、(圧縮されたメディアデータの)メッセージをソケットを介してクライアントに定期的に送信します。サーバーが使用する圧縮レベルをネットワーク品質に合わせて調整したいと思います。
そこで、大量のデータ(たとえば、500kb)がクライアントに完全に到達するまでにかかる時間を測定したいと思います。これには、その間のすべての遅延も含まれます。Iperfのようなツールは、独自のトラフィックを作成して測定を行うため、オプションではないようです。
私が思いついた最善のアイデアは、クライアントとサーバーのクロックの違いを何らかの方法で判断し、サーバーが各メッセージにタイムスタンプを送信するようにしてから、このタイムスタンプとクライアントが受信した時間の違いをサーバーに報告することです。メッセージ。サーバーは、メッセージがクライアントに到達するまでにかかった時間を判別できます。
これを行う簡単な方法はありますか?このためのライブラリはありますか?