TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT
作用: 配置 TCP 保活机制。TCP_KEEPIDLE 设置在空闲多少秒后开始发送 keep-alive 包,TCP_KEEPINTVL 设置 keep-alive 包的发送间隔,TCP_KEEPCNT 设置发送多少个 keep-alive 包后仍未收到回应则认为连接断开。
类型: int
值: 时间(单位秒)
代码示例:
int keepidle = 60; // 空闲60秒后开始发送keep-alive包
int keepintvl = 10; // keep-alive包的发送间隔是10秒
int keepcnt = 5; // 最多发送5个keep-alive包
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle, sizeof(keepidle)) < 0) {
perror("setsockopt TCP_KEEPIDLE");
}
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &keepintvl, sizeof(keepintvl)) < 0) {
perror("setsockopt TCP_KEEPINTVL");
}
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, &keepcnt, sizeof(keepcnt)) < 0) {
perror("setsockopt TCP_KEEPCNT");
}