C ソケットプログラミングで sendto() を使用した実際の送信速度について 2 つの質問があります。
少しソケット プログラミングを行い、for ループ内の各 sendto アクション間に間隔 (一時停止) なしで UDP データグラムを連続して送信しています。clock_gettime() を使用して経過時間を取得し、実際の送信レートを計算することは合理的ですか? 実際に送信速度に影響しているのは、CPU の周波数ですか、それとも私が使用しているネットワーク インターフェイスですか? 私の理解では、それは2つのうちの遅い方でなければならないということですか? そして、clock_gettime() を使用すると、この送信速度をかなり正確に見積もることができますか? この送信速度を取得し、S で表すとします。
UDP データグラムを PC から 100Mbps イーサネット ネットワーク インターフェイス経由でルーターに送信するとします。ルーターへの実際の到着率は?例えば、Sが100Mbps以上だと、到着速度は100Mbpsくらいになりますよね?S が 100Mpbs より大きい場合、到着率は S になるはずですよね? それともまだ100Mbpsでいいの?私は少し混乱しています。
そして、私がこれを行っている理由は、データグラムをドロップせずにルーターに連続して送信できるUDPデータグラムの最大バーストサイズを取得したいからです(発信リンクの特定の帯域幅制限が与えられます)。これを取得するためにいくつかのテストを行う方法はありますか?