c# - Streamreader readline阻塞tcp许多客户端c#

标签 c# wpf multithreading tcp chat

我已经用 C# WPF 为一个客户端和服务器编写了 TCP 聊天(它有效)。现在我想扩展这个程序,让更多客户参与聊天。

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

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

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

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

我的程序如何工作:

  1. 启动服务器
  2. 连接客户端1、客户端2
  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 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/

相关文章:

c# - 如何在.Net C# 中绕过 SSL 证书发出 HTTPS SOAP 请求?

c# - Discord C# 用户加入消息

.net - WPF XAML 字符串格式。逃脱 %

C++ std::thread 应该在堆上或堆栈上创建

Java - 如何确保可调用线程返回的数组的可见性

c# - 尝试在Visual Studio 2013/Windows 8.1预览版中编译C#Windows运行时(WinMD)组件时出错

c# - 要列出的 ListView 项目(字符串)

c# - WPF 窗体设计器与我的 XAML 有问题。请帮忙

wpf - 动画文本颜色

c++ - 是否有 `notify_one()` 的 `std::condition_variable` 队列?