2016-03-28 24 views
0

この問題の原因は完全にわかりません。私は2つのスレッドクライアントが同時にサーバーと通信していますが、何らかの理由で "奇妙な" sw.Flush()のデータが実際にクライアントコンソールに表示されています。"odd" sw.Flush()がstreamWriter.WriteLine()を送信しようとしています

たとえば、サーバーに私は、この点に達しています:

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

Iキーを押す初めて、「BOO」は最初のクライアントウィンドウに送信されます。 2回目は、「BOO」が第2のクライアントウィンドウに送信されます。しかし、3回目と4回目にキーが押されると、何も印刷されずにプログラムが続行されます。それは下に貼り付けられ、私のクライアント処理で何か可能性が

など5番目と6番目のためではなく、第七のために再び動作し、第八それから:

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)と言ったときにメッセージを捨てます。 変数をwhileにレスポンスを保存し、メソッドからReadLineを削除します。または、メソッドを削除して、あなたの試しに試してみてください。

+0

完璧な、私が必要とした正確な修正。とても有難い。 – James

+0

あなたは大歓迎です:) –

関連する問題