通过套接字多次发送序列化对象

时间:2014-05-25 21:18:31

标签: java sockets serialization

客户端通过套接字多次向服务器发送特定对象。代码如下所示:

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包含来自第一次通信的旧值)。 我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您需要定期致电reset()以停止构建对象的缓存,阻止您看到对这些对象的更改,或者您需要使用writeUnshared()

我会考虑每次reset()之前调用flush()