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

时间:2014-01-03 21:42:12

标签: java sockets objectinputstream

我遇到了这个非常奇怪的问题。在客户端我传递像

这样的对象
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();

此外,在我写对象和刷新之后我应该关闭流。我没有关闭它,因为对象是从代码的不同部分一个接一个地写入的。

1 个答案:

答案 0 :(得分:0)

对等方已关闭连接。因此,没有更多的对象可供阅读。你已经到了流的尽头了。 Ergo readObject()抛出EOFException.