繁体   English   中英

流阅读器readline阻止tcp许多客户端c#

[英]streamreader readline blocking tcp many clients c#

我已经在C#WPF中为一个客户端和服务器编写了一个TCP聊天程序(它可以工作)。 现在,我想扩展该程序,以使许多客户可以聊天。

客户端代码: http : //pastebin.com/Zv1Me6P4

服务器代码: http : //pastebin.com/VYBJCA9f

我正在检查所有内容,我猜streamreader readline失败。

在我的程序中,客户端将消息发送到服务器,服务器将消息发送给每个人,并在其文本框中显示消息。

我的程序如何工作:

  1. 启动服务器
  2. 连接Client1,Client2
  3. Client1发送消息“ a” ...什么都没发生
  4. Client1发送消息“ b” ...什么都没发生
  5. Client2发送消息“ c” ...两个客户端都获得了“ ac”

Streamreader会阻塞 ,我不知道如何解除阻塞。 好的,我可以使用新线程; +1客户端= +1线程,但这听起来很奇怪。 我真的在读stackOverFlow,发现:……while((line = reader.ReadLine())!= null)或!reader.EndOfStream或reader.pike> 0 ..所有这些都不起作用...或者我不正确地做。

阅读我的代码,您可能会感到困惑:

  • 在客户端程序中有一些服务器(它是旧的覆盖项目)
  • 我为每个客户创建新的阅读器和作家流; 我知道我可以使用一个R / W流,但是却不能使用它。.因为我使用列表,所以:reader(list.getByte())不起作用。

我求求你,请帮助我。 这是我工作中尚未解决的小部分,这让我很沮丧。 当问题合理且可以解决时,我喜欢编程。

感谢您在我的帖子下发表的所有评论。

我有一个类似的问题,就是ReadLine和ReadToEnd无法超过我的超时时间。 这对我有用

string line = "";
while (reader.Peek() > -1) {
    line += (char)reader.Read();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM