流阅读器读取线阻塞TCP许多客户端c#

本文关键字:TCP 许多 客户端 读取 | 更新日期: 2023-09-27 18:02:25

我用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或阅读器。派克> 0…所有这些都不起作用……或者我做错了。

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

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

我恳求你帮帮我。这是我没解决的小问题,让我很不安。当问题是合理的并且可以解决时,我喜欢编程。

感谢大家在我的帖子下面留言

流阅读器读取线阻塞TCP许多客户端c#

我有一个类似的问题,无法读取line和ReadToEnd将超过我的超时。

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