网络上大量数据传输(比如ftp)的速度控制问题!
比如ftp服务器,它可以控制一个用户的速度,也可以控制整个服务器的传输速度,这个怎么实现呢?
我现在是这样想的:
对于每个连接设一个计时器(一秒触发一次)、一个传输线程(控制数据的传输),当计时器时间到达时(也就是计时器触发)就检查这一秒内传输的数据量,如果超过预定的速度值,则让传输线程挂起一段时间,否则继续执行。这样就为控制连接的传输速度提供了基础。
要是想控制整个服务器的传输速度,则这样实现:把当前所有的传输连接归并到一个列表,每当发生一次变化(这个变化可以以情况而定,比如新增加了或者减少了一个传输连接等),先获得当前服务器的最大速度值,然后把它平均分到每个传输连接上,这样的话每个传输线程就以分配到的速度值作为最大速度控制传输。
我这样的方案是否可行,还请大家指点.
如果谁有更好的成熟的方案的话,可以提出来学习学习。