int enableKeepAlive = 1;
int fd = socket->socketDescriptor();
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &enableKeepAlive, sizeof(enableKeepAlive));
int maxIdle = 10; /* seconds */
setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &maxIdle, sizeof(maxIdle));
int count = 3; // send up to 3 keepalive packets out, then disconnect if no response
setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &count, sizeof(count));
int interval = 2; // send a keepalive packet out every 2 seconds (after the 5 second idle period)
setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
解决QTcpSocket state总是连接状态,即使把网线拔了
最新推荐文章于 2025-09-11 19:20:47 发布
本文介绍了如何使用setsockopt函数设置TCP连接的保持活跃参数,包括SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPCNT和TCP_KEEPINTVL,以确保在无数据交换时维持连接活性,防止因网络闲置导致的连接断开。

368

被折叠的 条评论
为什么被折叠?



