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つのストリームを複数のメンバーが使用することはできないと思います)。私はここでたくさんの記事を読んで数時間グーグルで検索しましたが、解決策を見つけることができません。チャンク転送エンコーディングはこのトピックと関係がありますか?
よろしく、デイモン