我有Android上的tcp套接字客户端。另外,我在nodejs上有tcp套接字服务器,它每2秒发送一次连接的客户端测试消息。当我启动应用程序时,它从服务器接收测试消息。但是,当我关闭Wi-Fi连接,我的客户端套接字关闭并抛出SocketException(etimedout),如果我打开Wi-Fi我无法接收服务器消息。但服务器消息已在服务器中排队,并等待发送给客户端。Android的tcp套接字设置etimedout值
据我所知,如果tcp客户端丢失连接,它应该尝试修复连接并接收服务器消息。但在我的情况下,客户端无法接收消息,因为套接字关闭。在我的电脑上使用Windows和Linux套接字客户端时,我做的是同样的事情,但是当我关闭wi-fi时,客户端套接字未关闭,并且当我切换wi-fi时,我收到了消息当wi-fi禁用时发送。
问题:为什么在android中,套接字很快关闭?我可以为套接字客户端设置任何超时关闭吗?
我想:
setKeepAlive(true); setSoTimeout(10000);
尽量选用SocketFactory.getDefault().createSocket();
无影响。
这可能是因为当你关闭wifi时,Android实际上正在移除该网络接口。比较关闭Android设备上的WiFi与拔掉它所连接的接入点之间的区别可能很有趣。 – 2014-11-04 17:04:01
我试图拔掉接入点。同样的结果。 – Vusal 2014-11-14 21:16:11