我遇到了这个非常奇怪的问题。在客户端我传递像
这样的对象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();
此外,在我写对象和刷新之后我应该关闭流。我没有关闭它,因为对象是从代码的不同部分一个接一个地写入的。
答案 0 :(得分:0)
对等方已关闭连接。因此,没有更多的对象可供阅读。你已经到了流的尽头了。 Ergo readObject()
抛出EOFException.