繁体   English   中英

Android tcp套接字设置etimedout值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM