我在 android 上有 tcp 套接字客户端。此外,我在 nodejs 上有 tcp 套接字服务器,它每 2 秒向连接的客户端发送测试消息。当我启动应用程序时,它会从服务器接收测试消息。但是当我关闭 wi-fi 连接时,我的客户端套接字关闭并抛出 SocketException (etimedout),如果我打开 wi-fi 我无法接收服务器消息。但是服务器消息已经在服务器中排队等待发送给客户端。
据我所知,如果 tcp 客户端失去连接,它应该尝试修复连接并接收服务器消息。但就我而言,客户端无法接收消息,因为套接字已关闭。
在我的电脑上使用 windows 和 linux 套接字客户端,我正在做同样的事情,但是当我关闭 wi-fi 时,客户端套接字没有关闭,当我打开 wi-fi 时,我收到了已发送的消息,当 wi -fi 禁用。
问题:为什么在 android 中,socket 会立即关闭?我可以为套接字客户端设置任何超时关闭吗?
我试过了 :
setKeepAlive(true); setSoTimeout(10000);
尝试使用SocketFactory.getDefault().createSocket();
没有效果。