在Android应用的TCP套接字上设置TCP keep_alive属性时出现“连接超时”错误

时间:2019-12-09 09:48:15

标签: android sockets tcp keep-alive

我正在使用以下选项来设置运行在连接到运行Linux的服务器的Android上的套接字上的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服务器还以相同的方式启用了保持活动设置。

问题:
一切正常。但是,如果我将Android设备保持连接状态6至7个小时,则会收到连接超时错误消息。这可能会在10小时后或3-4小时后发生。它真的是随机的。

这是因为我的客户端是在Android上运行的应用? (因为在具有相同设置的Linux上运行客户端时,我看不到该问题发生,所以)我的Android套接字是否可以在不超时的情况下永远保持连接状态?

环境:
-在Pixel XL上的Android 10上运行
-测试期间我的Android手机始终连接到充电器
-它是我的Android设备和Linux服务器之间的单个路由器。

0 个答案:

没有答案