客户端通过套接字多次向服务器发送特定对象。代码如下所示:
public void send(Operation operation, Object o){
try{
out.writeObject(operation);
if (o != null) out.writeObject(o);
out.flush();
} catch (IOException e) {
System.err.println("Couldn't write to OutputStream");
}
}
在Object中是一个从Integer到Integer的HashMap,这经常会改变。 服务器接受消息:
User newUser = (User) oin.readObject();
第一次一切正常时,newUser对象包含新接收的对象。 但是在第二次,第三次执行之后,newUser对象总是读取旧对象(HashMap包含来自第一次通信的旧值)。 我做错了什么?
提前致谢!
答案 0 :(得分:3)
您需要定期致电reset()
以停止构建对象的缓存,阻止您看到对这些对象的更改,或者您需要使用writeUnshared()
我会考虑每次reset()
之前调用flush()
。