异步Socket怎么设计心跳包在C#中异步的TCP

2024-11-29 00:42:16
推荐回答(2个)
回答1:

心跳包是按一定周期发送的包,用来检测TCP连接是否正常。心跳包工作逻辑如下:
1)TCP Listener(服务器端)侦听TCP Client(客户端)端的连接请求。一旦TCP Listener接受了客户端的请求,即启动一个定时器。定时器按约定的时间间隔T向客户端发送心跳包

2)客户端在连接建立后,也启动一个定时器,这个定时器定时间隔同样为T。当客户端收到心跳包后,将一个计数变量清零;在客户端定时器的事件处理方法中将这个计数变量增加1。同时检查计数变量的值。如果这个计数值大于某个数(比如2),这表示在2×T段时间内没有收到心跳包,即可以断定TCP连接出现问题。这时,客户端可以主动断开连接,然后再次请求连接服务器端。
----------------
心跳包处理过程与是否采用异步收发没有关系,也就是说,无论是同步方式还是异步方式都可以用上述心跳包处理逻辑

回答2:

任意一端(或两端)由定时器触发,定间隔发送特定比特串。
在监听到该格式比特串并做出回应后,将心跳间隔计数器归零。