私はクライアント サーバー アプリケーションを作成しており、時々クライアントにオブジェクトを送信する必要があります。だから私はこれを試しました:
サーバ側:
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 が同じ古い値 (2 回目の 2 ではなく 1) になったりすることもありました。
再初期化がこれを行う正しい方法だとは思わないので、 ObjectOutputStream.reset() メソッドを試しましたが、どちらも機能しませんでした。