streamreader readline阻塞tcp许多客户端c#

时间:2016-08-15 18:57:48

标签: c# wpf multithreading tcp chat

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

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

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

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

在我的程序中,客户端向服务器发送消息,该消息发送给每个人并在其TextBox中显示消息。

我的计划如何运作:

  1. 启动服务器
  2. 连接Client1,Client2
  3. Client1发送消息“a”......没有任何反应
  4. Client1发送消息“b”......没有任何反应
  5. Client2发送消息“c”......两个客户端都获得了“ac”
  6. Streamreader阻止,我不知道如何取消阻止它。好的,我可以使用新线程; +1客户端= +1线程,但听起来很奇怪。我真的在读stackOverFlow,我发现它像:((line = reader.ReadLine())!= null)或!reader.EndOfStream或reader.pike> 0 ..所有不起作用......或者我无法做到。

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

    • 在客户端程序中有一些服务器(它是旧的覆盖项目)
    • 我为每个客户创建新的Reader和Writer Stream;我知道我可以使用一个R / W流但是我无法使用它。因为我使用List列表所以:reader(list.getByte())不起作用。
    请你帮帮我。这是我工作中未解决的一小部分,这让我感到不安。当问题合理且可以解决时,我喜欢编程。

    感谢我发布的所有评论。

1 个答案:

答案 0 :(得分:3)

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

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