Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何同时处理多个TcpClient客户端_C#_Tcplistener - Fatal编程技术网

C# 如何同时处理多个TcpClient客户端

C# 如何同时处理多个TcpClient客户端,c#,tcplistener,C#,Tcplistener,我通常使用UdpClient编写套接字应用程序,我喜欢udp的工作方式。我只是在一个套接字上监听,任何人有请求时,我都会得到一个小数据报,通过他们的IpEndPoint直接回复到客户端 但是使用TcpListener似乎要复杂得多。我必须等待有人连接(通过server.AcceptTcpClient()),然后设置一个while循环来接收数据,直到接受的客户端不再有数据为止。最后,close()关闭连接 是否有一种方法可以保持多个连接处于打开状态并接收数据位,而不必在最后关闭连接?看起来很奇怪,

我通常使用
UdpClient
编写套接字应用程序,我喜欢udp的工作方式。我只是在一个套接字上监听,任何人有请求时,我都会得到一个小数据报,通过他们的
IpEndPoint
直接回复到
客户端

但是使用
TcpListener
似乎要复杂得多。我必须等待有人连接(通过
server.AcceptTcpClient()
),然后设置一个while循环来接收数据,直到接受的
客户端不再有数据为止。最后,
close()
关闭连接

是否有一种方法可以保持多个连接处于打开状态并接收数据位,而不必在最后关闭连接?看起来很奇怪,TCP比UDP复杂得多


想法?

您根本不需要关闭连接,它可以随时打开。问题更有可能是你认为需要解决的。TCP出现的许多问题仅仅是因为它不太清楚如何对一个包进行分组,以便知道何时收到完整的“消息”。请考虑使用事件或可观测项。