4

我正在尝试制作一个小程序来通过 C# 中的 HTTP 下载文件。使用 WebClient 的基本下载工作正常,但现在我想尝试下载具有多个连接的文件。至今:

HttpWebRequest HttpRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse HttpResponse = (HttpWebResponse)HttpRequest.GetResponse();
Stream ResponseStream = HttpResponse.GetResponseStream();

FileStream FSChunk = new FileStream(destination, FileMode.OpenOrCreate, FileAccess.Write);

while ((BytesThisRead = ResponseStream.Read(Buffer, 0, (int)BytesPerRead)) != 0)
{
    FSChunk.Write(Buffer, 0, BytesThisRead);
    TotallyRead += BytesThisRead;
    if (TotalReadLength - TotallyRead < buffersize)
        BytesPerRead = TotalReadLength - TotallyRead;
}

我可以使用这个 ResponseStream 下载文件,也可以使用一个 ResponseStream 分成两部分。我的问题是,WebStreams 不可搜索,所以我不能只设置一个位置来读取。如何使用不同的流(连接,我认为一个流不能被多个成员使用)同时通过 HTTP 下载一个文件。我在这里阅读了很多文章并搜索了几个小时,但我找不到解决方案。分块传输编码和这个话题有什么关系吗?

最好的问候, 达蒙

4

1 回答 1

4

您需要调用AddRange请求 - 这content rangehttp header其中设置了一个告诉服务器您要请求文件的哪个部分。

请参阅http://msdn.microsoft.com/en-us/library/dd992108.aspx

于 2011-08-07T12:44:08.993 回答