StreamWriter автоматически промывает буфер при получении больших сообщений


Обзор

У меня есть клиент-сервер, на котором у меня есть streamWriter.WriteLine(messageToClient);на сервере, отправляющем большие сообщения. streamReader.ReadLine(); на клиенте читает сообщения длиной 2000 нормально.

Проблема здесь заключается в том, что streamWriter.Flush() не влияет на более крупные сообщения, потому что я стремлюсь к тому, чтобы сервер мог переключаться между буферами, сбрасываемыми непосредственно (имея выход сообщения сервера fluid) и нет (ответ сервера будет перемешиваться вместе, пока он не достигнет предела буферов). промывать).

Вопрос: я думаю, что буферы автоматически промываются, потому что они заполнены? Так что же такое максимальный размер буфера streamWriters?

Я проверил, используя гораздо меньшие messageToClient и не промывка потока работает, как задумано. Aka поток сервера выводит группу небольших сообщений сразу клиенту, предположительно потому, что буфер был полон.

1 2

1 ответ:

Вы пробовали использовать конструктор, который принимает размер буфера в качестве аргумента ?

public StreamWriter(
    Stream stream,
    Encoding encoding,
    int bufferSize
)

Edit : копаясь в reflector, похоже, что размер буфера по умолчанию составляет 1024 байта.