为什么ObjectInputStream readObject()抛出EOFexception

我对这个非常奇怪的问题感到困惑。 在客户端我传递的对象是

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.