所以我试图使用eclipse在java项目中设置服务器 - 客户端。 除了我试图来回传递HashMap对象之外,或多或少都不相关。
我能够做到这一点但是当服务器发送第一个HashMap(HM1)时,客户端将接收HM1并相应地采取行动。然而,当另一个HashMap进来时,客户端没有收到HM2,而是HM1,尽管重复验证服务器确实正在发送HM2对象。
我后来通过发送dos.ObjectOutputStream(HashMapObject.clone())而不仅仅是dos.ObjectOutputStream(HashMapObject)解决了这个问题,现在客户端获取了正确的数据。
请记住,我只是通过连接到localhost进行测试来进行测试。
现在我的问题是,我不明白为什么.clone()有所不同,有人可以向我解释原因吗?
答案 0 :(得分:1)
在写入之间的reset()
上使用ObjectOutputStream
方法。
如果您最终多次写入同一个对象,则此输出流类型实际缓存已编写的对象以节省带宽。调用clone()
会产生影响,因为它在发送之前复制了对象。但是,输出流也会缓存那些克隆的对象,这很快就会成为内存问题。