以可重新启动模式并行地在多个块中以编程方式下载文件

Nik*_* Z. 10 .net c# parallel-processing http download

我需要通过非常慢的网络连接使用HTTP协议下载大文件.手动执行此操作时,下载速度有时会非常慢,并且该过程有时会冻结或终止.

对于手动下载,可以通过使用下载管理器(例如FDM)来大大改善这种情况- 这是一类十年前不可或缺且极受欢迎的程序,但由于可用的网络越来越快,其使用现在迅速减少 -它从不同的位置开始,以块的形式并行启动同一文件的多个下载会话,自动重启失败或过时的会话,实现工作平衡(成功下载一个块后,将剩余的一些块仍然下载到两个会话中),并最终将所有下载的块拼接成一个完整的单个文件.总的来说,它允许在不良连接上使文件下载健壮且速度更快.

现在我尝试在C#中实现相同的下载行为,以实现自动无人值守下载.我无法在.NET框架中看到任何实现此类的现有类,因此我正在寻找如何手动实现它的建议(可能借助于一些开源.NET库).

Mar*_*Put 2

这可以使用 HttpWebRequest.AddRange 方法来实现,该方法允许您从特定范围获取文件的字节。因此,当文件存在时,读取字节数并将其通过 HttpWebRequest.AddRange 传递。请参阅 Codeproject 中的代码示例:

http://www.codeproject.com/Tips/307548/Resume-Suppoert-Downloading

有关传递不同类型范围的其他信息,请参阅:http ://msdn.microsoft.com/en-us/library/4ds43y3w.aspx