1

我正在开发一个带有服务器的简单多人游戏。这个概念是在玩家每转一圈后将对象“游戏”发送给所有客户端。它包含客户需要的所有信息。它第一次运行良好。第二次之后,客户端中对象的值不会更改。确认服务器上的值已更改,并且我还在客户端将对象设置为空,然后再读取。我在Java方面没有经验。“Java”是否可能认为因为它是同一个实例,它不会读取新值而只是重新激活旧值(可能来自缓存)?

客户代码

this.game = null;
this.game = (Game) ois.readObject();

服务器代码

aCPS.get(i).oos.writeObject(game);

游戏

public class Game implements Serializable {...}

如果您需要更多代码,请告诉我。谢谢。

4

1 回答 1

3

如果您将相同的对象写入 aObjectOutputStream而不进行重置,您将获得相同的对象。这就是 Java 序列化处理任意对象图的方式。

要修复,最好使用新鲜的ObjectOutputStream. 你可以调用reset它。或者使用不可变对象或使用其他东西进行序列化。

于 2012-04-24T22:42:25.650 回答