以可重试方式并行多块程序化下载文件

10

我需要通过HTTP协议从一个非常缓慢的网络连接下载一个大文件。手动下载时,下载速度有时会变得难以忍受,下载进程有时会冻结或中止。

对于手动下载,使用下载管理器 (例如FDM) 可以极大地改善情况——这种程序类在十年前左右是不可或缺和极其流行的,但由于现在有更好更快的网络连接而减少了使用——它启动多个并行的相同文件下载会话,从不同位置开始分块下载,自动重启失败或失效的会话,实现工作平衡(在成功下载一个块后,将仍在下载的某些剩余块拆分为两个会话),并最终将所有已下载的块拼接成一个完整的单一文件。总体而言,它可以使在弱连接上进行的文件下载变得稳健且快速。

现在我正在尝试在C#中为自动无人值守的下载实现相同的下载行为。我没有看到.NET框架中的任何现有类来实现这一点,因此我正在寻求如何手动实现它的建议(可能需要使用一些开源的.NET库)。


1
也许像http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M这样的东西会很有兴趣?在Google上搜索[C# download manager]会返回一些有趣的信息。 - Jim Mischel
1个回答

2

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