Я создал простой сервер прослушивателя tcp, с которым я подключаюсь от своего мобильного телефона, чтобы управлять потолочным освещением. Но каждый сейчас и потом он застревает в streamreader.readline от клиента Подключение ПодключениеC# TcpListener streamreader.readline застрял
TcpListener listener = new TcpListener (IPAddress.Any, 8001);
listener.Start();
//--------------------------MAIN LOOP--------------------------
while (true)
{
//Recieve connection and take care of response
Console.WriteLine ("Awaiting connection");
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine ("Client accepted");
StreamReader sr = new StreamReader (client.GetStream());
Console.WriteLine ("1:3");
StreamWriter sw = new StreamWriter (client.GetStream());
Console.WriteLine ("1:4");
string fullrequests = "/no/request/value";
Console.WriteLine ("1:5");
fullrequests = sr.ReadLine(); <---- IT'S STUCK HERE
Console.WriteLine ("1:6");
Он застрял так, что «1: 6» никогда не печатается на экране. Если я перезагружу соединение с моего телефона, он пройдет мимо и перезапустится, но снова встанет на одно место. Если я прокрасться в другом соединении с другого устройства между ними, есть шанс, что он вернется к норме. Любые идеи о том, почему это или как обойти это?
ли вы отправить строку с символом новой строки (ы) в конце? – Stilgar
эта строка ожидает входящую строку с «\ n» в конце. –
'ReadLine()' - метод блокировки. Он будет блокироваться до тех пор, пока не появится строка (текстовое сообщение с '' \ xD \ xA "' в конце). Вы можете попытаться установить тайм-аут, прочитать асинхронно или прочитать байты/строку .. но не строку. Проще всего, наверное, проверить перед чтением. – Sinatr