如果在C#中的Tcp套接字编程中有传入消息时如何读取

时间:2013-11-29 09:14:04

标签: c# sockets .net-4.5 tcpclient

我有一个用.NET C#编写的服务器客户端程序。我使用套接字编程,到目前为止服务器和客户端都在工作。只有一个服务器实例,而我可以将多个客户端连接在一起。 现在我的代码就像下面的场景一样。 enter image description here

当我启动服务器代码时,它会启动倾听。当我启动客户端时,它等待在控制台上写入命令。写完东西后,客户端将其发送到服务器,然后服务器对此做了一些事情,写回来。这就是循环的方式。就像乒乓球比赛一样。 我的客户端代码在link中可用。

问题和我想要的东西: 使用此功能,我的客户端无法监听服务器,除非它向服务器写入内容。只要有传入的消息,我想让它听。我的服务器代码很好,服务器的顺序(监听然后写)是可以的。客户端序列(写入listen)也没关系,但我的客户端除非写入,否则无法读取。假设有两个客户端正在与服务器通信。 client1告诉服务器 - “嘿,我需要属于client2的东西”,然后服务器将向client2发送一条消息。使用当前代码,client2无法监听消息,因为它实际上正在等待写入。希望我能说清楚。

我怎样才能实现这一目标?任何代码示例都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您需要的不仅仅是客户端上的线程。一个用于接受控制台输入&发送和一个用于读取TCP流(阻塞)和显示。让它在控制台上看起来像IRC有点棘手,因为用户写入的字符和接收的字符将交错。