测量tcp连接速度

时间:2013-05-03 15:20:21

标签: c sockets unix time tcp

我想编写一个简单的unix-application来测量tcp-connection速度。 所以我有:

  • 服务器侦听指定端口,接受连接并测量速度
  • 客户端发送消息(连续)

我认为服务器上的测量结果是这样的:

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

但似乎这是错误的方式。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在服务器上,当您从客户端收到第一个数据时,将当前时间记录到变量中。

同样在服务器上,无论何时从客户端接收数据,都要将收到的字节数添加到计数器变量中。

然后,在任何时候,您可以通过计算(total_bytes_received)/(current_time - first_data_received_time)来计算连接的累积平均每秒字节速度; (如果current_time和first_data_received_time相等,则注意可能除以零!)

如果你想做一些更精细的事情,比如过去10秒的跑动平均值,那就更复杂了,但计算累积平均值非常容易。

答案 1 :(得分:0)

我已经在网络上完成了一些任务,有一件事我注意到它不会像你想要的那样工作。我们必须完成服务器的发送 - 接收再次接收,还有其他因素阻止我们这样做......从MTU到缓冲区大小等我已经使用netperf来预测[是]之前的带宽。这就是你说的速度?]。代码是开源的。