SO_KEEPALIVE是系统TCP底层的机制,用于系统维护每一个设置了SO_KEEPALIVE的tcp连接。
心跳线程是应用层应用程序编写的,主要用于终端和服务器连接的检查。
即使SO_KEEPALIVE检测到连接正常,但并不能保证终端和服务器连接的正常。有一种情况,服务器进程死了,但它和客户端的tcp连接还连着(该连接由系统维护的)。
这就是SO_KEEPALIVE不能取代心跳线程的原因吧。