我想写一个简单的Unix应用程序来测量TCP连接速度。
所以我有:
服务器侦听指定的端口,接受连接并测量速度
客户端发送消息(连续)
我以为服务器上的测量是这样的:
clock_gettime(CLOCK_REALTIME, &start);
size = recv(csocket_fd, buf, BUFFER_SIZE, 0);
clock_gettime(CLOCK_REALTIME, &end);
但这似乎是错误的方式。
有什么建议么?
最佳答案
在服务器上,当您从客户端收到第一个数据时,请将当前时间记录到变量中。
同样在服务器上,每当您从客户端接收数据时,请将接收到的字节数添加到计数器变量中。
然后,您可以随时通过计算(total_bytes_received)/(current_time-first_data_received_time)来计算连接的累积平均每秒字节数; (如果current_time和first_data_received_time相等,请注意可能的除数为零!)
如果您想做得更细致一些,例如最近10秒钟的运行平均值,则要花点时间,但是计算累计平均值很容易。
关于c - 测量TCP连接速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16362353/