在默认的情况下,TCP连接是没有保活的心跳的。这就是说,当一个TCP的socket,客户端与服务端谁也不发送数据,会一直保持着连接。这其中如果有一方异常掉线,另一端永远也不可能知道。这对于一些服务型的程序来说,将是灾难性的后果。
所以,必须对创建的socket,启用保活心跳,即Keepalive选项。
启用Keepalive
对于WIN32或者Linux平台来说,设置socket的Keepalive都很简单,只需使用setsockopt设置SO_KEEPALIVE即可。
setsockopt的函数原型在Linux环境下为:
#include <sys/types.h>
#include <sys/socket.h>
int setsockopt(int s, int level, int optname,
const void *optval,
socklen_t optlen);
,在WIN32平台下为