У меня есть веб-приложение, которое подключается к серверу по TCP-соединению и читает двоичный документ, который затем записывается в его объект ответа. Другими словами, он передает файл с внутреннего сервера, используя собственный протокол, и возвращает этот файл своему клиенту через HTTP.
Сервер отправляет код состояния и тип MIME, который я успешно прочитал, а затем записывает содержимое файла и закрывает сокет. Кажется, это работает нормально.
Клиент (веб-приложение на C #) читает данные:
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();
}
Кажется, это всегда выходит из цикла чтения до того, как все данные поступят. Что я делаю не так?