在c#中从服务器轮询连接的客户端

本文关键字:连接 客户端 服务器 | 更新日期: 2023-09-27 18:14:16

我正在尝试从连接到我的服务器的客户端轮询连接。

当你使用poll时,你需要给它一个套接字连接,但在服务器端,套接字绑定到它自己的IP地址和特定的端口。使另一个套接字连接到相同的端口,但与客户端的IP地址将不起作用,因为你不能有多个连接在同一个套接字。

我只是想知道什么是一个好方法来不断检查客户端是否仍然连接到服务器,也当它断开连接?

我在想某种超时检查之类的。我只是想知道是否有任何通用或适当的方法来实现这一点。

我已经尝试过Socket.Poll,但它似乎没有达到我想要的。

重申我的问题,如何检查客户端是否在服务器端使用c#中的TCP套接字连接?

在c#中从服务器轮询连接的客户端

插座。Receive只会返回0。从MSDN

如果您使用面向连接的Socket, Receive方法将读取尽可能多的可用数据,直到缓冲区的大小。如果远程主机使用Shutdown方法关闭Socket连接,并且已经接收到所有可用的数据,则Receive方法将立即完成并返回零字节。

如果你需要的话,在Socket类中也有一个Connected属性

有两种套接字:用于侦听和用于连接。如果客户端已经连接,则必须有一个与该连接相关联的Socket实例。

使用此套接字定期发送数据并接收和确认返回。这是唯一可以100%确保连接仍然打开的方法。

特别是Connected属性不能用于检测连接丢失,因为如果网线被拔出,双方都不会以任何方式通知。