Получать от сокета до конкретной строки в C # - PullRequest
0 голосов
/ 23 мая 2011

Я создал этот маленький клиентский сокет в C #:

TcpClient socket = new TcpClient(this.ip, this.port);
NetworkStream stream = socket.GetStream();
StreamReader input = new StreamReader(stream);
StreamWriter output = new StreamWriter(stream);

output.WriteLine(request);
output.Flush();

String result = "";
String line = "";
while (line != "GO")
{
    line = input.ReadLine().Trim();
    result += line + "\n";
}

socket.Close();
return result;

Он подключается просто отлично, но остается в цикле while, он будет получать только первую строку, которую посылает сокет сервера, поэтому «GO» никогда не принимается. Я что-то здесь не так делаю?

1 Ответ

1 голос
/ 23 мая 2011

Это, вероятно, потому что он ждет данных, которые повесят ваше приложение.

Возможно, вам придется использовать TcpListener вместо этого и вызвать AcceptTcpClient() при получении данных.

Далее, я всегда вызываю это в потоке или BackgroundWorker, чтобы интерфейс не зависал.

Если вам нужен TcpListerner, чтобы прекратить прослушивать TCP-соединение, вы должны вызвать метод Stop() экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...