【发布时间】:2016-08-09 05:17:22
【问题描述】:
TCP 流本身会增长,直到它们填满从src 到dst 使用的链接的最大容量(如果所有这些链接都是空的)。
有没有简单的方法来限制它?我希望能够以最大 X mbps 速率发送 TCP 流。
我考虑过使用 socket.send() 函数每秒发送 X 个字节,然后在其余时间休眠。但是,如果链路拥塞并且速率降低,一旦链路再次不拥塞,它将需要恢复之前无法发送的内容,并且速率将会增加。
【问题讨论】:
-
恢复将以更高的速度爆发,但长期的平均值仍应为您发送
socket.send()的速度。 -
有什么方法可以限制爆发吗?我正在使用一个超级拥塞的网络,所以我会一直遇到这些突发事件。
-
你可以发送non-blocking(数据包的大小最大为MTU),但非阻塞模式让事情变得更加困难
-
@janbrohl 非阻塞与阻塞仅影响应用程序在本地套接字缓冲区填满时的行为方式,与线路上的速率无关。