我不完全确定导致此问题的原因。我有两个线程客户端同时与服务器通信但由于某种原因只有"奇怪" sw.Flush()实际上是发送要在客户端控制台上显示的数据。
例如,在服务器中我达到了这一点:
while (true)
{
while (sr.ReadLine() != null)
{
Console.WriteLine(readServerResponse(sr));
}
}
我第一次按一个键," BOO"被发送到第一个客户端窗口。第二次," BOO"被发送到第二个客户端窗口。但是,对于第3次和第4次按下一个键,不会打印任何内容并继续执行程序。然后它再次适用于第5和第6,但不适用于第7和第8等。
这可能是我的客户端处理中粘贴在下面的内容:
readServerResponse
因此public static string readServerResponse(StreamReader sr)
{
string responseString = "";
try
{
responseString = sr.ReadLine();
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
}
return responseString;
}
方法是:
{{1}}
如果有人能对此有所了解,我将不胜感激。
答案 0 :(得分:3)
当您说while(sr.ReadLine() != null)
时,您会丢弃消息。
只需将响应存储在变量中,然后从方法中删除ReadLine。或者删除方法并尝试捕捉环绕时间块。