2016-03-28 2 views
0

Я не совсем уверен, что вызывает эту проблему. У меня есть два поточных клиента, взаимодействующих с сервером в одно и то же время, но по какой-то причине только «нечетные» sw.Flush() фактически отправляют данные, которые будут отображаться на клиентской консоли.Только «нечетный» sw.Flush() работает для отправки streamWriter.WriteLine()

Например, на сервере я достижение этой точки:

while (true) 
{ 
     sw.WriteLine("BOO"); 
     sw.Flush(); 
     Console.ReadKey(); 
} 

В первый раз я нажимаю клавишу «BOO» отправляется в первое окно клиента. Во второй раз «BOO» отправляется во второе клиентское окно. Однако в течение 3-го и 4-го раза нажата клавиша, ничего не печатается, и программа продолжается. Затем он снова работает на 5-й и 6-й, но не для 7-го и 8-го и т.д.

Это может быть что-то в моем обращении клиента, который будет вставлен ниже:

while (true) 
      { 
       while (sr.ReadLine() != null) 
       { 
        Console.WriteLine(readServerResponse(sr)); 

       } 
      } 

Метод readServerResponse таким образом:

public static string readServerResponse(StreamReader sr) 
     { 
      string responseString = ""; 
      try 
      { 
       responseString = sr.ReadLine(); 

      } 
      catch(Exception e) 
      { 
       Console.WriteLine("Exception: " + e.ToString()); 
      } 
      return responseString; 
     } 

Если бы кто-нибудь мог пролить свет на это, я был бы очень благодарен.

ответ

3

Выбрасываете сообщения, когда говорите while(sr.ReadLine() != null). Просто сохраните отклик в переменной в переменной и удалите ReadLine из вашего метода. Или удалите этот метод и попробуйте поймать Surround the while Block.

+0

Совершенно, точно исправление, в котором я нуждался. Очень признателен. – James

+0

Добро пожаловать :) –

Смежные вопросы