java - 连接更改时套接字不会断开连接

标签 java android exception sockets

我的聊天应用程序连接到服务器,用户发送/接收信息。当连接发生变化时,例如 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/

相关文章:

android - 这是否可以在 Android 中同时录制视频和上传到远程服务器?

java - 始终使用 'this' 作为监视器锁是可以接受的吗?

java hmac/sha512 生成

java - Java 文件锁定机制(FileLock 等)的问题

java - 如果 `set setOpaque(false);`,JWindow 上的 JPanel 不透明 - 为什么?

android - 在从 AsyncTaskLoader 完成 onLoadFinished 后动态更新 Fragment 的 UI - 无法获取 ViewGroup

java - TTS 无法从 Android 中的 IU 线程正确循环?

exception - 同时具有相同优先级的两个外部中断(Cortex-M)?

java - **线程 "main"java.util.InputMismatchException 中出现异常**

c# - Xml 反序列化在空元素上失败