[英]Android tcp socket set etimedout value
我在Android上有tcp套接字客户端。 我在nodejs上也有tcp套接字服务器,它每2秒发送一次到连接的客户端测试消息。 当我启动应用程序时,它从服务器接收测试消息。 但是,当我关闭wi-fi连接时,我的客户端套接字关闭并抛出SocketException(etimedout),并且如果我打开wi-fi,则无法接收服务器消息。 但是服务器消息已经在服务器中排队,等待发送给客户端。
据我所知,如果tcp客户端失去连接,它应该尝试修复连接并接收服务器消息。 但就我而言,客户端无法接收消息,因为套接字已关闭。
在我的PC上使用Windows和Linux套接字客户端时,我正在做相同的事情,但是当我关闭wi-fi时,客户端套接字没有关闭,而当我打开wi-fi时,我收到的消息已发送,当wi -fi已禁用。
问题:为什么在android中,套接字会立即关闭? 我可以为套接字客户端设置任何超时时间吗?
我试过了 :
setKeepAlive(true); setSoTimeout(10000);
试图使用SocketFactory.getDefault().createSocket();
没有效果。
您的SoLinger打算做什么?
尝试使用
setSoLinger(boolean on, int timeout)
看看是否对您有帮助。
但是当我关闭wi-fi连接时,我的客户端套接字关闭并抛出SocketException
您的套接字没有关闭。 WiFi关闭时,套接字输入流存在问题。 它返回-1,但是套接字仍然有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.