断开连接时,ObjectInputStream.readObject()不会抛出异常

时间:2011-05-01 11:04:19

标签: java serialization tcp

我在TCP连接上使用ObjectStream将数据从客户端发送到服务器。当服务器仍在等待新数据时,客户端会被终止。在这些情况下,readObject()保持阻塞而不会抛出异常,我的计算停止。

如何确定ObjectStream是否已断开连接或仅等待更多数据?

由于通信之间的长时间延迟,使用超时很困难。

1 个答案:

答案 0 :(得分:1)

唯一安全的方法是使用超时。我怀疑你在检测到断开连接时遇到的长时间延迟是由于你所拥有的网络性质所致。

如果停止计算死连接,那真的是一个问题吗?这可能会在短时间内浪费资源,但您应该在几分钟内检测到故障,然后清理资源。