You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:54:11