0

接続されたクライアント (サーバー -> クライアント) のレイテンシーを計算しようとしています。ping ループ (クライアントがまだ接続されているかどうかをテストする場所) 中にこれを実行したいと考えています。クライアントが切断されている場合は、データを送信します)。

        while (information.connectionEst)
        {
            try
            {


                byte[] data = Encoding.ASCII.GetBytes("");

                stream.Write(data, 0, data.Length);


            }
            catch (Exception e)
            {

                killConnection();
                thread.Abort();
            }

        }

データのパケットを送信するのにかかった時間を計算する必要があると思います。しかし、私はそれを行う方法がわかりません。どんな助けでも歓迎されます。

4

1 に答える 1

2

接続の一方向 (サーバー→クライアント) のレイテンシーを取得することは非常に困難です。接続の両端に非常に正確な時間があり (たとえば、GPS や原子時計、またはそれに非常に近い高品質の NTP 同期時計)、それぞれの側で専用のソフトウェアが実行されていることがわかっている場合は、これを行うことができます。

それ以外の場合は、両方向 (RTT、往復時間) のレイテンシを計算し、2 で割って、接続がパケットのパスが対称であることを願っています。パケットのパスが対称でない場合、パケットは一方向に移動するのに他の方向よりも時間がかかり、アプリオリにどれくらいかかるかを知ることはできません.

RTT の計算は簡単です。最初の側で短いメッセージを送信し、もう一方の側ですぐに別のメッセージを返すようにします。最初の側は、RTT を取得するために、要求メッセージが送信された時刻から応答メッセージが受信された時刻を差し引きます。

于 2012-05-05T18:44:30.957 に答える