2010-06-17 108 views
5

我写了一个应用程序,它可以与在线文件夹同步本地文件夹,但它会占用我所有带宽,我如何限制应用程序使用的带宽量? (编程)?限制带宽速度

+0

您多久检查一次更新?你多久需要检查一次?减少更新间隔可能会有很大帮助。 – 2010-06-17 14:10:45

+4

重复的问题。请参阅 - > http://stackoverflow.com/questions/847422/how-to-programatically-limit-bandwidth-usage-of-my-c-windows-forms-application – 2010-06-17 14:10:50

回答

2

看看http://www.codeproject.com/KB/IP/MyDownloader.aspx

他利用众所周知的技术,它可以在Downloader.Extension \ SpeedLimit找到

基本上,更多的数据被读取流之前,检查如何进行自上次迭代以来,实际上已经有大量数据被读取。如果该速率超过最大速率,那么读取命令暂停很短的时间,并重复检查。大多数应用程序使用此技术

0

我会说“不”。除非你真的做错了什么,否则你的程序不应该占用带宽。您的路由器应该平衡所有请求之间的可用带宽。

我建议你做到以下几点:

一)所有文件创建MD5哈希值。比较文件的散列和/或日期和大小,并仅同步已更改的文件。除非你同步大量文件,否则你不应该同步大量数据。

b)限制发送速率。在上传线程中以1-8KB块读取文件,然后在每个块后调用Thread.Sleep来限制速率。但是,您必须在上传端执行此操作。

c)通过Gzip流管道一切。 (System.IO.Compression)对于文本文件,这可以减少需要传输的数据的大小。

希望这会有所帮助!

+0

thanx ...您的压缩率和发送率评论肯定会派上用场。我的文件夹可以达到30个演出...并且需要在应用程序本身设置限制。 “折射圣骑士”指出我在正确的方向上设定费率。 – 2010-06-17 16:19:37