TCP 接続を使用してサーバーに接続し、バイナリ ドキュメントを読み取り、それを応答オブジェクトに書き込む Web アプリがあります。つまり、カスタム プロトコルを使用してバックエンド サーバーからファイルを転送し、そのファイルを HTTP 経由でクライアントに返します。
サーバーはステータス コードと MIME タイプを送信します。これを正常に読み取り、ファイルの内容を書き込み、ソケットを閉じます。これはうまくいくようです。
クライアント (C# Web アプリ) は、データを読み取ります。
private NetworkStream stream_;
public void WriteDocument(HttpResponse response)
{
while (stream_.DataAvailable)
{
const int bufsize = 4 * 1024;
byte[] buffer = new byte[bufsize];
int nbytes = stream_.Read(buffer, 0, bufsize);
if (nbytes > 0)
{
if (nbytes < bufsize)
Array.Resize<byte>(ref buffer, nbytes);
response.BinaryWrite(buffer);
}
}
response.End();
}
これは、すべてのデータが到着する前に常に読み取りループを終了するようです。私は何を間違っていますか?