10

我需要通过非常慢的网络连接使用 HTTP 协议下载一个大文件。手动进行时,下载速度有时会慢得令人难以忍受,并且该过程有时会冻结或终止。

对于手动下载,使用下载管理器(例如FDM )可以大大改善这种情况——这类程序在大约十年前是必不可少且非常流行的,但现在由于可用的网络更好更快,其使用量迅速减少——它从不同位置开始以块的形式并行启动同一文件的多个下载会话,自动重新启动失败或陈旧的会话,实现工作平衡(在成功下载一个块后,将一些仍在下载的剩余块拆分为两个会话),并最终将所有下载的块拼接成一个完整的单个文件。总体而言,它允许在连接不良的情况下使文件下载健壮且更快。

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

4

1 回答 1

2

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

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

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

于 2013-08-02T19:46:39.397 回答