HTML/CSS/JS
のカスタマイズテーマを持つHTTP File Server
のようなアプリケーションを作成しています。ダウンロードマネージャのほとんどがサーバーに接続しているため、複数の部分でファイルを処理したいと考えています。複数の接続を使用してファイルを8
個のファイルとしてダウンロードすると、その機能により最終的にダウンロード速度が向上し、ダウンロードを再開して一時停止することができます。C#HttpListener部分コンテンツ
HTTP's Partial Content
がこれを可能にすることを知っていれば、私はウェブを見渡しましたが、私のコードでどのように実装するのがよい例が見つからないのですか?HttpListener
をウェブページとファイルに使用します。
誰かが代わりにTcpListener
を使用するように提案しましたが、私のアプリ全体はHttpListener
で動作し、実際にはTcpListener
で部分的なコンテンツの良い例は見つかりませんでした。
ウェブサーバーはマルチスレッドであり、異なる接続を介して同時に多くの要求を処理する際に問題はありません。 しかし、いつでも私は、単一の接続とIDMは、サーバーが"206"
(HTTP Partial Content
)を提供することができないことを示しているものの、それだけでコンテンツを提供していますIDM
を持つ巨大なファイルをダウンロードし
ここで私は現在、提供するために使用しているコードですファイル:
context.Response.ContentType = GetMeme(filename);
Stream input = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
context.Response.ContentLength64 = input.Length;
byte[] buffer = new byte[1024 * 16];
int nbytes;
while ((nbytes = input.Read(buffer, 0, buffer.Length)) > 0)
context.Response.OutputStream.Write(buffer, 0, nbytes);
input.Close();
context.Response.StatusCode = (int)HttpStatusCode.OK;
context.Response.OutputStream.Flush();
context.Response.OutputStream.Close();
私は、HTTPヘッドからのオフセットバッファを取得しようとしましたが、それはオフセットによるにストリームを閉じるために失敗し、Cannot close stream until all bytes are written.
は、任意のより良い代替手段があると言いますか? HttpListenerでもHTTP:206を正しく処理できますか? 部分コンテンツはTcpListenerでどのように動作しますか?
有用なリンクや情報があれば教えてください。
ありがとうございました。完全なフィードバックを投稿してみようとしています。私はそれがMIMEであることを知っています。時にはメソッドとvarsの面白い名前を使っています:)) –