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;
}

この1つのResponseStreamを使用してファイルをダウンロードできます。また、1つのResponseStreamを使用して2つの部分に分割することもできます。私の問題は、WebStreamsがシーク可能ではないため、読み取る位置を設定することはできないということです。異なるストリームを使用してHTTP経由で1つのファイルを同時にダウンロードするにはどうすればよいですか(接続、1つのストリームを複数のメンバーが使用することはできないと思います)。私はここでたくさんの記事を読んで数時間グーグルで検索しましたが、解決策を見つけることができません。チャンク転送エンコーディングはこのトピックと関係がありますか?

よろしく、デイモン

4

1 に答える 1

4

リクエストを呼び出す必要があります。これにより、ファイルのどの部分をリクエストしているかをサーバーAddRangeに通知するセットが作成されます。content rangehttp header

http://msdn.microsoft.com/en-us/library/dd992108.aspxを参照してください

于 2011-08-07T12:44:08.993 に答える