Android设置TCP keep-alive后TCP连接随机超时问题咨询
Android TCP Socket 长连接超时问题求助
我最近在做Android应用的TCP长连接功能,连接的是Linux服务器,在Socket上设置了如下TCP keep-alive参数:
// 设置空闲多久后开始发送保活包 int idleTimeout = 3; setsockopt(socketDescriptor, SOL_TCP, TCP_KEEPIDLE, &idleTimeout, sizeof(int)); // 设置保活包的发送间隔 int interval = 3; setsockopt(socketDescriptor, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(int)); // 设置未收到回应时的重试次数 int unackPacketCount = 5; setsockopt(socketDescriptor, SOL_TCP, TCP_KEEPCNT, &unackPacketCount, sizeof(int));
Linux服务器端也配置了完全相同的keep-alive参数,原本运行都正常,但Android设备连接6-7小时后会随机出现Connection timed out错误,超时时长完全不固定,有时候3-4小时就断了,有时候能撑到10小时。但相同的配置下,Linux客户端就不会出现这个问题。
我现在有两个疑问:
- 这种随机超时是Android应用的正常现象吗?
- 有没有办法让Android Socket实现真正的永久连接?
测试环境信息:
- 设备是Pixel XL,系统为Android 10
- 测试期间设备一直保持充电状态
- 网络环境只有一台路由器,连接Android设备和Linux服务器
内容的提问来源于stack exchange,提问作者TheWaterProgrammer
相关产品推荐
相关产品推荐

