StreamReader
- это линейно-ориентированный ридер.Он будет читать первую строку (завершается новой строкой).Если вы хотите остальную часть текста, вы должны выполнить несколько readline.То есть:
StreamReader sr = new StreamReader(server);
string message = sr.ReadLine(); // will get "line1"
string message2 = sr.ReadLine(); // will get "line2"
Вы не хотите «читать до конца» в сетевом потоке, потому что это приведет к зависанию считывателя, пока сервер не закроет соединение.Это может занять очень много времени и может привести к переполнению буфера.
Как правило, вы увидите это:
NetworkStream stream = CreateNetworkStream(); // however you're creating the stream
using (StreamReader reader = new StreamReader(stream))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// process line received from stream
}
}
Это дает вам каждую строку по мере ее получения и завершится, когдаСервер закрывает поток.
Если вы хотите, чтобы считыватель обрабатывал всю многострочную строку как единый объект, вы не можете надежно сделать это с StreamReader
.Возможно, вы захотите использовать BinaryWriter
на сервере и BinaryReader
на клиенте.