C#中的多部分下载?

时间:2009-10-12 21:01:21

标签: c# .net http download lighttpd

请原谅我对这个问题的无知。

我想用C#编写一个应用程序,它可以像DownThemAll那样从服务器上下载文件。 DownThemAll似乎打开四个连接到HTTP服务器下载相同的文件。我只是想知道是否有任何现有的库可能会这样做。

以下是他们网站关于此功能的引用:

  

DownThemAll采用称为“多部分下载”的智能下载技术。它将文件分成多个部分,可以同时下载。

我还希望能够暂停/恢复下载。这是我想要的基本功能,我不一定需要一个完整的下载管理器库,但如果有一个可以做这些事情,那么我也很想知道它们。这些文件位于受lighttpd托管的受密码保护的目录中,因此我还需要一些方法来验证自己。

如果没有我可以使用的任何预先存在的库,那么我应该研究哪些.net类可以做到这一点?

谢谢!

编辑:将标题重新编辑为更合适,并在DownThemAll网站上添加一条引文,说明它是什么。

第二次编辑:我认为svens到目前为止发布了最合适的答案,尽管作为评论:/这是我的错,因为我错误地标题,因为我不知道我在说什么。他发布了一个article,它通过HTTP下载暂停/恢复。它还讨论了我认为我应该使用的Range标题:

  

Range标头能够在一个请求中请求多个范围,这个功能称为“多部分范围”。不要将此与分段下载混淆,几乎所有下载工具都使用分段下载来提高下载速度。这些工具声称通过打开两个或更多同时连接来提高下载速度,每个连接都请求不同范围的文件。

所以我认为我想使用该范围同时下载文件的某些部分。然后,这可能没有任何优势,只需一次下载文件。我会这样做并允许暂停/恢复。

谢谢你们!

P.S svens,请继续发表评论作为答案,以便我可以接受。如果你愿意的话。

5 个答案:

答案 0 :(得分:3)

请原谅一篇比基督更老的文章,但是这个:

http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M

似乎更接近于问题。

当前标记的“正确答案”适用于提供服务器端部分下载例程,它可以解释HTTP Range标题的功能,但它不是下载客户端。

答案 1 :(得分:2)

我对此有看见, http://www.devx.com/dotnet/Article/22533/0/page/2似乎已经说明了一切。

答案 2 :(得分:1)

System.Net.HttpClient类应该能够下载您的文件。只需从线程或线程池调用此类,您就可以同时下载大量文件。

答案 3 :(得分:0)

System.Net.WebrequestMethods.Http命名空间是一个很好的起点。您可能希望使用Get来下载所需的文件。

http://msdn.microsoft.com/en-us/library/system.net.webrequestmethods.http.aspx

答案 4 :(得分:0)