Java 通过套接字多次发送序列化对象
客户端通过套接字多次向服务器发送特定对象。代码如下所示:Java 通过套接字多次发送序列化对象,java,sockets,serialization,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
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");
}
}
对象中有一个从整数到整数的哈希映射,它经常改变。
服务器接受带有以下内容的消息:
User newUser = (User) oin.readObject();
第一次一切正常时,newUser对象包含新接收对象的一部分。
但是在第二次、第三次之后。。。执行时,newUser对象始终读取旧对象(HashMap包含第一次通信中的旧值)。
我做错了什么
提前谢谢 您需要定期调用
reset()
以停止对象缓存的建立,防止看到这些对象的更改,或者需要使用writeUnshared()
我会考虑调用<代码> REST()/代码>每次在代码> FLUSEH()/代码>每次。< /P> < P>定期调用“<代码> ReSET())>代码>以阻止对象的缓存建立,防止您看到这些对象的更改,或者您需要使用<代码> WraveUnSyfd()< < /C> > /P>
我会考虑调用<代码> REST()/代码>每次在代码> FLUSEH()/代码>每次。< /P> < P>定期调用“<代码> ReSET())>代码>以阻止对象的缓存建立,防止您看到这些对象的更改,或者您需要使用<代码> WraveUnSyfd()< < /C> > /P>
我会考虑调用<代码> REST()/代码>每次在代码> FLUSEH()/代码>每次。< /P> < P>定期调用“<代码> ReSET())>代码>以阻止对象的缓存建立,防止您看到这些对象的更改,或者您需要使用<代码> WraveUnSyfd()< < /C> > /P>
我会考虑在<代码> FLUSEH()/<代码>之前调用<代码> REST()/>代码。< /P> >好的,非常感谢。我现在觉得自己很愚蠢,因为我一遍又一遍地读到这个解决方案,但它不起作用。问题是,我在服务器的InputStream上使用了reset,当然它总是发出错误消息。好的,非常感谢。我现在觉得自己很愚蠢,因为我一遍又一遍地读到这个解决方案,但它不起作用。问题是,我在服务器的InputStream上使用了reset,当然它总是发出错误消息。好的,非常感谢。我现在觉得自己很愚蠢,因为我一遍又一遍地读到这个解决方案,但它不起作用。问题是,我在服务器的InputStream上使用了reset,当然它总是发出错误消息。好的,非常感谢。我现在觉得自己很愚蠢,因为我一遍又一遍地读到这个解决方案,但它不起作用。问题是,我在服务器的InputStream上使用了reset,当然它总是发出错误消息。