繁体   English   中英

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

[英]Sending serialized Objects multiple times over a Socket

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

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");
    }   
}

在对象中是一个从Integer到Integer的HashMap,多数民众赞成在经常更改。 服务器通过以下方式接受消息:

User newUser = (User) oin.readObject();

第一次一切正常时,newUser对象包含新接收到的对象。 但是在执行第二,第三,...之后,newUser对象总是读取旧对象(HashMap包含来自第一次通信的旧值)。 我究竟做错了什么?

提前致谢!

您需要定期调用reset()以停止建立对象的缓存,从而防止看到这些对象的更改,或者您需要使用writeUnshared()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM