0

tcp 接続速度を測定する単純な unix アプリケーションを作成したいと考えています。ので、私は持っています:

  • サーバーは指定されたポートでリッスンし、接続を受け入れ、速度を測定します
  • クライアントはメッセージを送信します (継続的に)

サーバーでの測定は次のようなものだと思いました:

clock_gettime(CLOCK_REALTIME, &start);
size = recv(csocket_fd, buf, BUFFER_SIZE, 0);
clock_gettime(CLOCK_REALTIME, &end);

しかし、それは間違った方法のようです。

助言がありますか?

4

2 に答える 2

1

サーバーでは、クライアントから最初のデータを受信したら、現在の時刻を変数に記録します。

また、サーバーでは、クライアントからデータを受信するたびに、受信したバイト数をカウンター変数に追加します。

その後、いつでも、(total_bytes_received)/(current_time - first_data_received_time); を計算することにより、接続の累積平均バイト/秒速度を計算できます。(current_time と first_data_received_time が等しい場合、0 による除算の可能性に注意してください!)

過去 10 秒間の移動平均など、より複雑なことをしたい場合は、もう少し複雑になりますが、累積平均の計算は非常に簡単です。

于 2013-05-03T17:00:31.560 に答える