恢复崩溃的InputStream

问题描述:

我正在写服务器,我正在使用ObjectInputStream来处理专有数据包。我最近有时会收到一些意想不到的ClassCastException,我想打电话objectInputStream.readObject(),然后尝试将它们转换为专有数据包。我一直在试图追查这个问题,我一直在想是否因为objectInputStream因某种问题而崩溃。根据objectInputStream.readObject()方法的文档...“所有异常对于InputStream都是致命的,并使其处于不确定状态;调用方可以忽略或恢复流状态。”恢复崩溃的InputStream

我想知道他们是什么意思的“恢复流状态”...有没有适当的方式来恢复objectInputStream或我应该做一个socket.getInputStream()

如果我理解正确,您的异常并不是由objectInputStream.readObject()引起的,而是通过将(成功返回的)对象转换为您正在尝试读取的对象,因此异常不应影响流。

+0

嗯,我怀疑ObjectInputStream坏了,因为我得到一个ClassCastException后,我的ObjectInputStream停止从客户端接收数据包。 – Brian 2011-06-01 02:19:44

+0

'readObject'是抛出异常还是抛出异常? – trutheality 2011-06-01 02:31:07

+0

嗯,我明白你的意思了,这就是我最初怀疑的......当我知道我正在发送它们时,我为什么会得到ClassCastExceptions;顺便说一句,演员们90%的时间都在工作,有时它会崩溃。我尝试了一个小实验...尝试在崩溃后重新加载ObjectInputStream,所以我调用'objectInputStream = new ObjectInputStream(socket.getInputStream);'并引发'StreamCorruptedException'。 – Brian 2011-06-01 02:36:07