我的客户端有以下方法:
public boolean save() {
this.ostream.writeObject(Command.SAVE); // write to socket
return this.istream.readBoolean();
}
在我的服务器中:
Object o = this.istream.readObject();
if (o == Command.SAVE) {
boolean isSaved = save(); // save to database
this.ostream.writeBoolean(isSaved);
}
如果我使用readBoolean
和writeBoolean
,则客户端阻止readBoolean
方法,但如果我使用readObject
和writeObject
,我的应用程序可以正常工作精细。有readBoolean
方法阻止的原因吗?
答案 0 :(得分:0)
(它更像是评论,但代码示例很难读,所以我发布它作为答案...希望它不会打扰任何人)
你确定吗?我刚用这段代码测试了它
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("d:/objects.obj"));
System.out.println("writeObject(true)");
out.writeObject(true);
System.out.println("writeBoolean(true)");
out.writeBoolean(true);
System.out.println("writeBoolean(true)");
out.writeBoolean(true);
out.close();//or flush
System.out.println("------------------");
ObjectInputStream in=new ObjectInputStream(new FileInputStream("d:/objects.obj"));
System.out.println("readObject="+in.readObject());
System.out.println("readBoolean="+in.readBoolean());
System.out.println("readObject="+in.readObject());//<- readObject stored by writeBoolean
它接缝工作正常。我遇到的问题只是当我尝试将readObject
存储为writeBoolean
,反之亦然readBoolean
存储在writeObject
时。
也许你只需要刷新输出流。