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

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();


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

最佳答案

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

10-07 16:15