我正在使用以下选项来设置运行在连接到运行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服务器之间的单个路由器。