2009-10-12 13 views
5

請原諒我對這個問題的無知。在C#中多部分下載?

我想在C#中編寫一個應用程序,它可以以與DownThemAll相同的方式從服務器上下載文件。 DownThemAll似乎打開四個連接到HTTP服務器來下載相同的文件。我只是想知道是否有任何現有的庫可以做到這一點。

下面是來自他們對這個功能的網站報價:

的DownThemAll擁有所謂的「多下載」智能下載技術。它將文件分成多個部分,並同時下載。

我還希望能夠暫停/恢復下載。這是我想要的基本功能,我不一定需要一個完整的下載管理器庫,但如果有一個可以做這些事情,那麼我也很想知道它們。這些文件位於由lighttpd託管的受密碼保護的目錄中,所以我還需要一些方法來驗證自己。

如果沒有我可以使用的任何預先存在的庫,那麼應該查看哪些.net類可能可以執行此操作?

謝謝!

編輯:重新標題爲更合適,並添加了從DownThemAll網站解釋它是什麼的報價。

第二編輯:我相信迄今爲止svens發佈了最合適的答案,雖然作爲評論:/這是我的錯,因爲我不知道我在說什麼。他發佈了一個article,它通過HTTP下載暫停/恢復。它也談到了Range頭是什麼,我想我應該使用:

範圍頭能夠要求超過一個範圍在一個單一的請求,被稱爲功能的「多範圍。」不要將它與分段下載混淆,幾乎所有下載工具都會使用它來提高下載速度。這些工具聲稱通過打開兩個或更多同時連接來提高下載速度,每個連接請求不同範圍的文件。

所以我接受它我想使用該範圍同時下載文件的某些部分。然後再一次,這可能沒有任何優勢,只是一口氣下載文件。我會這樣做,並允許暫停/恢復。

謝謝你們!

P.Svens,繼續並發表評論作爲答案,以便我可以接受它,如果你想。

+2

http://www.devx.com/dotnet/Article/22533/0/page/2描述瞭如何在http協議中恢復下載,http://www.codeproject.com/KB/IP/pauseresume.aspx描述瞭如何使用ftp服務器來完成。 – svens 2009-10-12 21:09:28

+0

這可能是我想的答案。同樣的方法可能是他們如何下載單獨的文件塊,然後以某種方式在塊完成後將其放在一起。 – 2009-10-12 21:15:37

+0

這種做法對服務器來說實際上是不利的,並且努力阻止這種下載嘗試。在撥號調制解調器的時代,人們試圖把所有東西都擠出去,這個竅門就上升了。只是很好,並在一個連接下載。編輯:這種方法會因爲幾個原因在我的服務器上失敗。我有一件東西可以把棍子扔在妓女的腳下。 – Zdenek 2016-07-21 20:13:28

回答

2

我與這個svens,http://www.devx.com/dotnet/Article/22533/0/page/2似乎說明了一切。

+0

謝謝。既然他先說,我會等一會兒,看看他是否將它作爲答案發布,以便我可以接受它。否則它會在這個問題上爲了關閉而去找你。 – 2009-10-12 21:48:14

1

System.Net.HttpClient類應該能夠下載您的文件。只需從線程或線程池調用此類,就可以同時下載大量文件。

+1

謝謝感謝,但我並不是故意說我想同時下載各種文件。 DownThemAll以某種方式打開四個連接到HTTP服務器以下載/ same /文件。 – 2009-10-12 21:10:37

+0

HttpClient可能比Http.Get更容易... +1 – overstood 2009-10-12 21:10:42

+1

他們稱之爲「多部分下載」。 – 2009-10-12 21:12:00