我的聊天应用程序连接到服务器,用户发送/接收信息。当连接发生变化时,例如 3g->wifi、wifi->3g、丢失数据连接等,socket有时在断开连接之前会保持连接很长时间。在此期间,无法判断连接是否仍处于 Activity 状态,似乎消息发送正常。其他时候,发送消息时,它会抛出 IO 错误并断开连接。
除了实现代码来检测连接变化并适本地重新连接之外,是否可以让套接字在连接变化时立即抛出 IO 异常?
编辑:我正在使用以下代码进行连接:
Socket sock = new Socket();
sock.connect(new InetSocketAddress(getAddress(), getPort())), getTimeout());
//get bufferedReader and read until BufferedReader#readLine() returns null
我没有使用 setSoTimeout,因为根据远程服务器的配置,数据可能会长时间不传输。
最佳答案
你说的是 java.net.Socket联系?然后试试 setSoTimeout() .否则请指定您的连接方式。
关于java - 连接更改时套接字不会断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008668/