TCP能检测到断网断电事件吗?

我们知道, tcp的建立和拆除需要经历三次握手和四次挥手, 那么当客户端与服务器建立了tcp连接之后,突然断掉网线或者掉电, 两侧的tcp状态会有什么变化呢?答案是:两侧tcp的状态不会有任何变化,此时的tcp连接属于死连接。客户端不知道服务器的状态, 服务器也不知道客户端的状态。 难道, 就没有机制实现断网断电的检测了吗?

        一切合理的需求都可以满足。其实这也是个屁话。

      

       检测tcp连接的断网或者断电, 通常有如下两种思路:

      1. 利用tcp的keep alive机制, 当断网或断电后, 会导致socket状态的变化。 可以专门开一个线程来检测这个状态的变化。

      2. 在应用程序中,自己实现keep alive机制,实际上也就是所谓的heart beat(心跳包).


比较起来, 1更简单,自由度更小。 2更复杂,但自由度相对较大

你可能感兴趣的:(TCP能检测到断网断电事件吗?)