2

短い tcp/ip パケットを送受信する Windows XP 32 システムで C++ アプリケーションを実行しています。

到着時間を (正確に) 測定する 到着時間が 16 ミリ秒の時間単位に量子化されていることがわかります。(到着するすべてのパケットが (16 )xN ミリ秒間隔で互いに分離されていることを意味します)

パケットの集約を避けるために、ソケット変数で IPPROTO_TCP オプションを TCP_NODELAY に設定して NAGLE アルゴリズムを無効にしようとしましたが、役に立ちませんでした

この問題は、16 ミリ秒のクロックを持つ Windows スケジュールに関連していると思われます。この問題の解決策はありますか? ありがとう

4

1 に答える 1

0

QueryPerformanceTimer()__rdtsc( )などのより解像度の高いタイマーを使用して、それらの欠点を認識します。

同様に、待機関数を使用している場合は、timeBeginPeriod()を呼び出して 1 ミリ秒の解像度にするか、より高い解像度のタイマーをラップするビジーウェイ遅延関数を実装することもできます。

于 2010-11-30T08:00:33.940 に答える