我想要实现的是以稳定的速度(例如600KB / s)通过套接字输出数据。因为TCP有自己的流量控制,所以选择UDP。
问题出现了:如何实现这一目标?我可以每分钟发送一个600KB大小的数据包吗?以及如何控制两个数据包之间的时间间隔?我可以设置一个select()的时间间隔:
select(fd, NULL, NULL, NULL, &tv); //tv is set as 1 second
我对此表示怀疑,因为套接字sendto()正在应用程序层运行,我们无法确保该数据包已由操作系统内核发送。
如何解决这个问题?或者有更好的方法吗?
PS:C语言
答案 0 :(得分:0)
最简单的方法是在发送之间等待足够长的时间以保持总吞吐量下降。这样可以将“平均”发送速率降低到所需的值。
然而,更好的实现方式是接收器在接收输入后发送ACK。从而,以最佳速率进行起搏。当然,那么需要超时和重新发送等等。