Я пытаюсь связаться с сервером.StreamReader - ReadLine из Socket не останавливается
Это мой простой код:
System.Net.Sockets.TcpClient sock = new System.Net.Sockets.TcpClient();
string outputString = string.Empty;
sock.Connect("stack.overflow", 80);
NetworkStream ns = null;
StreamReader sr = null;
StreamWriter sw = null;
ns = sock.GetStream();
sr = new StreamReader(ns);
sw = new StreamWriter(ns) { NewLine = "\r\n", AutoFlush = true };
ns.ReadTimeout = 10;
sw.WriteLine("send data to server");
sw.Flush();
outputString = sr.ReadLine();
while (!string.IsNullOrEmpty(outputString))
{
System.Diagnostics.Debug.WriteLine(outputString);
outputString = sr.ReadLine();
}
(. Я знаю, что мой код имеет место для улучшения Он держал это просто для моего теста)
Все отлично работает рядом с ReadLine(). Это не делает то, что я ожидаю от этого.
Он читает все строки с сервера, и после последней строки он просто бесконечно ждет новой строки. По крайней мере, для меня кажется, что он ждет.
Я думал, что он остановится после последней строки и вернет нуль или что-то еще.
Может кто-нибудь объяснить мне, что лучше всего, чтобы получить все линии с сервера и двигаться дальше?
Поскольку поток, предоставляемый 'Socket.GetStream()', не может знать, когда сервер будет отправлен, 'StreamReader.ReadLine()' никогда не сможет сказать, когда он будет получен. – willaien
Сервер должен отправить пустую строку после отправки содержимого (чтобы эта реализация работала) – Benj