我正在寻找一种在.NET 中进行保持活动检查的方法。该方案适用于 UDP 和 TCP。
目前在 TCP 中,我所做的是一侧连接,当没有数据要发送时,它每 X 秒发送一次保持活动状态。
我希望对方检查数据,如果在 X 秒内未收到,则引发事件左右。
我尝试做的一种方法是进行阻塞接收并将套接字的 RecieveTimeout 设置为 X 秒。但问题是每当超时发生时,套接字的 Receive 会抛出一个 SocketException 并且这一侧的套接字会关闭,这是正确的行为吗?为什么套接字在超时后关闭/死亡而不是继续?
检查是否有数据和睡眠是不可接受的(因为我可能在睡眠时接收数据滞后)。
那么解决这个问题的最佳方法是什么,为什么我在另一边描述的方法失败了?