类似于现在那些下载软件(bt 电驴 迅雷 快车)里的限速功能. 我的程序里既是客户端又是服务端(有iocp方式的异步文件发送,又有堵塞方式的多线程文件接收),做的是自己定义的一种多点p2p传输工具. 现在就限速功能做得不如意. 不知道那些著名下载软件用的是一种什么方法,做到限速比较精确.各位能给点思路吗? Sleep就不用说了,那种有点儿戏.

解决方案 »

  1.   

    我是用socket api写的,文件传输稳定和速度都很好,就是太占用带宽了.几乎下载和上传都用的带宽的极限速度.严重影响其他程序访问网络的速度.5555555.原来快也是种罪过.
      

  2.   


    楼主搞笑了吧.自己写的东西也不能限速?随便简单的数学方法计算下发送用的时间,发送的数据,然后再Sleep()下,这是最简单的,基本上大部分阻塞I/O模型都是这样做的.如果想平滑的话,使用QOS吧,这东西比较麻烦的,99%的软件都是自己限制速度的(ftp服务器,代理服务器什么的)
      

  3.   

    自己可以控制在socket 上发送数据的速度。:)
      

  4.   

    gfdsgdfsgdf
      

  5.   

    用sleep 方法可以控制,但是这样的方法在读取速度却有问题。例如你设置发送速度为2M,可能这2M在前一两毫秒就已发送完成,那一秒中剩下的八九百毫秒就用来sleep,sleep后再把速度置为0,为了下一秒统计。
    我是用定时器来读取这个速度统计值的,就可能会在 sleep  后几毫秒读取这个值,这个值就可能非常小了。
    请问有没有其他的方法呢?