如何控制UDP套接字的吞吐量?

时间:2014-12-09 07:27:09

标签: c linux sockets udp throughput

我想要实现的是以稳定的速度(例如600KB / s)通过套接字输出数据。因为TCP有自己的流量控制,所以选择UDP。

问题出现了:如何实现这一目标?我可以每分钟发送一个600KB大小的数据包吗?以及如何控制两个数据包之间的时间间隔?我可以设置一个select()的时间间隔:

select(fd, NULL, NULL, NULL, &tv); //tv is set as 1 second

我对此表示怀疑,因为套接字sendto()正在应用程序层运行,我们无法确保该数据包已由操作系统内核发送。

如何解决这个问题?或者有更好的方法吗?

PS:C语言

1 个答案:

答案 0 :(得分:0)

最简单的方法是在发送之间等待足够长的时间以保持总吞吐量下降。这样可以将“平均”发送速率降低到所需的值。

然而,更好的实现方式是接收器在接收输入后发送ACK。从而,以最佳速率进行起搏。当然,那么需要超时和重新发送等等。