0

サーバーからの応答の時間 (秒、ミリ秒、マイクロ秒) を試みています。クライアントは小さなパケットをサーバーに送信し、サーバーはクライアントに応答しています。パケットがクライアントからサーバーに送信され、サーバーは独自のタイムスタンプをパケットに追加してクライアントに返します。クライアントがそのパケットを受信すると、両方の時間の差を見つけ、この差をラウンドトリップ時間 + サーバーの処理時間として返します。

私の問題は、tcp ソケットにタイムスタンプ オプションがあることは知っていますが、ネット上にはその例がありません。誰かが私を正しい方向に導くことができれば、それは素晴らしいことです。

ありがとう OS: ubuntu 11.10 言語: C ソケット: BSD

4

3 に答える 3

1

クライアントはシングルスレッドですか? その場合、往復にかかる時間 + 処理時間の測定のみに関心がある場合は、クライアント側でパケットを送信してそれに対応する応答を受信するのにかかる時間を測定するだけです。したがって、クライアントが送信を行う前にミリ秒単位で時間を取得し、クライアントが応答を受信して​​からミリ秒単位で時間を取得します。これら 2 つの違いは、往復時間 + 処理時間です。もちろん、これはクライアントがシングル スレッドの場合にのみ機能します (つまり、送信を行い、すぐに recv を呼び出してサーバーからの応答を待ちます)。

于 2012-04-19T18:34:51.653 に答える
0

あなたが行きたいウサギの穴の深さに応じて...

(タグのように)TCPパケットを具体的に使用する場合、最も簡単な方法は、現在のタイムスタンプのみで構成されるペイロードを使用してクライアントからサーバーにパケットを送信することです。サーバーがパケットを受信したら、サーバーのタイムスタンプをペイロードに追加して、クライアントに返します。

クライアント/サーバーの両方も時間同期されていることを確認してください。

于 2012-04-19T18:20:00.283 に答える
0

パフォーマンス測定に興味がある場合は、wireshark http://www.wireshark.org/をインストールして、パケット ログを確認することをお勧めします。これにより、測定しているコードやスタックを変更することなく、正確なタイミングが得られます。

于 2012-04-19T18:16:30.520 に答える