流阅读器读取线阻塞TCP许多客户端c#
本文关键字:TCP 许多 客户端 读取 | 更新日期: 2023-09-27 18:02:25
我用c# WPF为一个客户端和服务器编写了一个TCP聊天程序(它可以工作)。现在我想扩展这个程序,在聊天中有多个客户端。
客户端代码:http://pastebin.com/Zv1Me6P4服务器代码:http://pastebin.com/VYBJCA9f
我正在检查所有内容,我猜streamreader readline失败了。
在我的程序中,客户端发送消息给服务器,服务器发送消息给每个人,并在他们的文本框中显示消息。
我的程序如何工作:
- 启动服务器
- 连接Client1, Client2
- Client1发送消息"a"…什么也不会发生
- Client1发送消息"b"…什么也不会发生
- Client2发送消息"c"…两个客户端都得到"ac"
Streamreader阻塞,我不知道如何解除阻塞。好的,我可以使用新线程;+1客户端= +1线程,但这听起来很奇怪。我真的在阅读stackOverFlow,我发现了这样的东西:while((line = reader. readline ()) != null)或!reader。EndOfStream或阅读器。派克> 0…所有这些都不起作用……或者我做错了。
阅读我的代码你可能会感到困惑:
- 在客户端程序中有一些服务器(它是旧的覆盖项目)
- 我为每个客户端创建新的读写流;我知道我可以使用一个R/W流,但我不能使用它。因为我使用List List,所以:reader(List . getbyte())不起作用。
我恳求你帮帮我。这是我没解决的小问题,让我很不安。当问题是合理的并且可以解决时,我喜欢编程。
感谢大家在我的帖子下面留言
我有一个类似的问题,无法读取line和ReadToEnd将超过我的超时。
string line = "";
while (reader.Peek() > -1) {
line += (char)reader.Read();
}