如何减慢Windows上的TCP连接速度?

meg*_*019 4 c++ windows proxy tcp

我正在开发一个Windows代理程序,其中两个通过不同适配器连接的TCP套接字由我的程序桥接.也就是说,我的程序从一个套接字读取并写入另一个套接字,反之亦然.每个套接字都由自己的线程处理.当一个套接字读取数据时,它会排队等待另一个套接字写入.我遇到的问题是当一个链接以100Mb运行而另一个链接以10Mb运行时.我从100Mb链接读取数据的速度比我写入10Mb链接的速度快.如何"减速"更快的连接,使其基本上以较慢的链接速度运行?将较快的链接更改为较慢的速度不是一种选择. - 谢谢

Nik*_*sov 8

在读写线程之间创建一个固定长度的队列.当队列已满时阻塞队列,当队列为空时阻塞队列.常规信号量或互斥/条件变量应该有效.使用队列大小播放,因此较慢的线程始终处于忙碌状态.


Sou*_*ity 6

如果这是一个问题,那么你正在编写错误的程序.

您不能在10mbps链接上放置超过10mbps,因此在较慢的链接上写入的线程应该在您编写时开始阻塞.因此,只要您的线程使用与写入缓冲区相同大小的读取缓冲区,线程就应该尽可能快地使用数据,因为它可以将数据丢回到10mbps管道中.任何流量控制都需要保持远程发送器不超过10mbps到100mbps管道中,TCP协议会自动处理.

所以只要你的读写缓冲区在该线程(或任何线程)中的大小相同,它就不应该是一个问题.