限制带宽速度

5

我编写了一个应用程序,可以将本地文件夹与在线文件夹同步,但它占用了所有的带宽。请问如何在程序中限制应用程序使用的带宽?


你通常会多久检查更新?而你需要多久检查一次呢?缩短更新间隔可能会有很大帮助。 - Tomas Aschan
4
重复的问题。请参见 --> https://dev59.com/OnRA5IYBdhLWcg3wvQhh - Refracted Paladin
3个回答

2
请看http://www.codeproject.com/KB/IP/MyDownloader.aspx。他使用了一个广为人知的技术,可以在Downloader.Extension\SpeedLimit中找到。基本上,在读取流之前,会检查自上次迭代以来实际读取了多少数据。如果该速率超过最大速率,则暂停读取命令一小段时间并重复检查。大多数应用程序都使用这种技术。

0

试试这个:http://www.netlimiter.com/ 它已经在我的“查看一下”列表上很长时间了(虽然我自己还没有尝试过)。


0

我会说“不要这样做”。除非您在做一些真正不正确的事情,否则您的程序不应该占用带宽。您的路由器应该在所有请求之间平衡可用带宽。

我建议您执行以下操作:

a)为所有文件创建md5哈希值。比较哈希和/或日期和大小以查找已更改的文件并仅同步这些文件。除非您正在同步大型文件,否则您不必同步大量数据。

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

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

希望这能有所帮助!


谢谢...你的压缩和发送速率的评论肯定会派上用场。我的文件夹可以高达30G,限制需要在应用程序本身上设置。 "Refracted Paladin" 指导我正确设置了编程速率。 - stoic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接