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