1

C ソケットプログラミングで sendto() を使用した実際の送信速度について 2 つの質問があります。

  1. 少しソケット プログラミングを行い、for ループ内の各 sendto アクション間に間隔 (一時停止) なしで UDP データグラムを連続して送信しています。clock_gettime() を使用して経過時間を取得し、実際の送信レートを計算することは合理的ですか? 実際に送信速度に影響しているのは、CPU の周波数ですか、それとも私が使用しているネットワーク インターフェイスですか? 私の理解では、それは2つのうちの遅い方でなければならないということですか? そして、clock_gettime() を使用すると、この送信速度をかなり正確に見積もることができますか? この送信速度を取得し、S で表すとします。

  2. UDP データグラムを PC から 100Mbps イーサネット ネットワーク インターフェイス経由でルーターに送信するとします。ルーターへの実際の到着率は?例えば、Sが100Mbps以上だと、到着速度は100Mbpsくらいになりますよね?S が 100Mpbs より大きい場合、到着率は S になるはずですよね? それともまだ100Mbpsでいいの?私は少し混乱しています。

そして、私がこれを行っている理由は、データグラムをドロップせずにルーターに連続して送信できるUDPデータグラムの最大バーストサイズを取得したいからです(発信リンクの特定の帯域幅制限が与えられます)。これを取得するためにいくつかのテストを行う方法はありますか?

4

1 に答える 1

0

100 万の事柄が速度とドロップされたパケットに影響を与えます。送信速度、行の長さなどを変化させ、速度とドロップされたパケットを測定し、csv ファイルなどのグラフに結果を出力する C プログラムを作成することをお勧めします。

于 2012-07-25T18:05:11.903 に答える