网络限速方法?
比如像BT这样的软件,可以对上传和下载进行最大速度的限制,但是,这个限速的原理是什么?肯定先排除Sleep。
我搜了一下,有提到下载端不要快速地读掉socket缓冲区中的数据,而是定时的去读,这个道理可以理解,但是,这有一个问题,定时去读的话,会导致socket的缓冲区经常处于满状态,速度是限制了,但是,传输速度却也高不了。我想到的是,同样是从TCP缓冲区的角度去考虑,利用TCP滑动窗口机制,当我检测到接收端的速度达到临界值之后,我把滑动窗口的大小马上改为很小很小,1byte,或者0,socketopot里面不知道有无这个操作。通过这样的操作,使得发送端这个时候只能发送微小的数据,但是又不能不发,当速度降下来之后,又把窗口的值慢慢改大,一个动态的过程。
不知道限速的做法有经验的都是怎么弄的?真心求教~