我已经用 C# WPF 为一个客户端和服务器编写了 TCP 聊天(它有效)。现在我想扩展这个程序,让更多客户参与聊天。
客户代码:http://pastebin.com/Zv1Me6P4
服务器代码:http://pastebin.com/VYBJCA9f
我正在检查所有内容,我猜想streamreader readline失败了。
在我的程序中,客户端将消息发送到服务器,服务器发送给每个人并在他们的文本框中显示消息。
我的程序如何工作:
- 启动服务器
- 连接客户端1、客户端2
- Client1 发送消息“a”...没有任何反应
- Client1 发送消息“b”...没有任何反应
- Client2 发送消息“c”...两个客户端都收到“ac”
Streamreader 被阻止,但我不知道如何解除阻止。好吧,我可以使用新线程; +1个客户端=+1个线程,但这听起来很奇怪。我真的在读 stackOverFlow ,我发现了类似的东西: while((line = reader.ReadLine()) != null) 或 !reader.EndOfStream 或 reader.pike > 0.. 所有这些都不起作用......或者我这样做是不正确的。
阅读我的代码你可能会感到困惑:
- 在客户端程序中有一些服务器(它是旧的覆盖项目)
- 我为每个客户创建新的读者和作家流;我知道我可以使用一个 R/W Stream,但我无法使用它。因为我使用 List 列表,所以: reader(list.getByte()) 不起作用。
我求求你帮帮我。这是我工作中尚未解决的一小部分,这让我感到不安。当问题合理并且可以解决时,我喜欢编程。
感谢您在我的帖子下发表的所有评论。
最佳答案
我遇到了类似的问题,无法 ReadLine 和 ReadToEnd 会超出我的超时时间。这对我有用
string line = "";
while (reader.Peek() > -1) {
line += (char)reader.Read();
}
关于c# - Streamreader readline阻塞tcp许多客户端c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961256/