我正在寻找在.NET中进行保持连接检查的方法,情况适用于UDP和TCP。
目前在TCP中,我的做法是一方连接后,在没有要发送的数据时,每隔X秒发送一个心跳包。
我希望另一方检查数据,如果在X秒内没有接收到数据,则触发事件或其他操作。
我尝试的一种方法是执行阻塞式接收,并将套接字的ReceiveTimeout设置为X秒。但问题是,每当超时发生时,套接字的Receive就会抛出一个SocketExeception,并且在这一侧的套接字将关闭,这是正确的行为吗?为什么在超时后套接字会关闭/死亡而不是继续运行?
进行数据检查并休眠的方式不可接受(因为在睡眠期间可能会延迟接收数据)。
那么最佳方法是什么,为什么我在另一侧所描述的方法失败了?