我正在编写一个客户端-服务器应用程序,有时我需要向客户端发送一个对象。所以我尝试了这个:
服务器端:
ss = new ServerSocket(port);
s = ss.accept();
ize = new HashMap<>();
oos = new ObjectOutputStream(s.getOutputStream());
ize.put("ize", new TileSprite(1, 2, 3, 4, "tile"));
oos.writeObject(ize);
System.out.println(ize.get("ize").getX());
//oos = new ObjectOutputStream(s.getOutputStream());
ize.get("ize").setX(2);
oos.writeObject(ize);
System.out.println(ize.get("ize").getX());
客户端:
s = new Socket("localhost", 12345);
ois = new ObjectInputStream(s.getInputStream());
ize = (HashMap<String, GeneralSprite>) ois.readObject();
System.out.println(ize.get("ize").getX());
//ois = new ObjectInputStream(s.getInputStream());
ize = (HashMap<String, GeneralSprite>) ois.readObject();
System.out.println(ize.get("ize").getX());
除非我从 2 重新初始化中删除注释,否则我永远不会得到正确的值。我尝试了一些方法,但结果几乎总是一样的:有时我遇到了一些错误,或者只是 x 的旧值(第二次是 1 而不是 2)。
我不认为重新初始化是正确的方法,所以我尝试了 ObjectOutputStream.reset() 方法,但它也不起作用。