小编典典

为什么ObjectInputStream readObject()抛出EOF异常

java

我陷入了这个非常奇怪的问题。在客户端中,我传递的对象是

try{
    oos.writeObject(new GameStartSerializedObject());
    oos.flush();
}
catch(Exception e){
    e.printStackTrace();
}

在服务器中,我正在读取对象

try{
    //Its my turn
    thrown_message = player_reader.readObject();
}
catch(Exception e){

我的问题是为什么我会出现EOF异常。我对对象输入流的理解是,当我调用readObject()时应该阻塞直到获得对象,这样才能知道是否达到了eof?请帮忙!

这就是我创建对象流的方式

ois = new ObjectInputStream(socket.getInputStream());
oos = new ObjectOutputStream(socket.getOutputStream());
oos.flush();

另外,在我写完对象并刷新之后,我应该关闭流。我不会关闭它,因为对象是从代码的不同部分开始一个接一个地定期编写的。


阅读 407

收藏
2020-11-26

共1个答案

小编典典

对等方已关闭连接。因此,没有其他对象可读取。因此,您已经到达了流程的尽头。Ergo readObject()投掷EOFException.

2020-11-26