首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制TCP发送速率

限制TCP发送速率
EN

Stack Overflow用户
提问于 2016-08-09 03:15:21
回答 1查看 1.7K关注 0票数 0

TCP流本身的性质会增长,直到它们填满了从srcdst的链路的最大容量(如果所有这些链路都是空的)。

有没有一种简单的方法来限制它?我希望能够发送具有最大X mbps速率的TCP流。

我考虑使用socket.send()函数每秒发送X个字节,然后在其余时间休眠。但是,如果链路拥塞并且速率降低,一旦链路再次变得不拥塞,它将需要恢复之前无法发送的内容,并且速率将会增加。

EN

回答 1

Stack Overflow用户

发布于 2016-08-09 05:17:23

在TCP级别,您拥有的唯一控制是传递给send()的字节数,以及调用它的频率。一旦send()将一些字节移交给网络堆栈,那么发送这些字节的速度(或速度)完全取决于网络堆栈。

考虑到上述情况,您可以通过以下方法大致限制传输速率:监视已发送的字节数,以及自开始发送以来经过了多少时间,并推迟后续调用send() (和/或传递给send()的数据字节数),以防止平均速率高于目标速率。

如果你想要更好的控制,你需要使用UDP而不是TCP。使用UDP,您可以直接控制每个数据包的确切发送时间。(而对于TCP,网络堆栈决定何时发送每个数据包、数据包中的内容、何时重新发送丢弃的数据包等)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38836898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档