1

私はクライアント サーバー アプリケーションを作成しており、時々クライアントにオブジェクトを送信する必要があります。だから私はこれを試しました:

サーバ側:

    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() メソッドを試しましたが、どちらも機能しませんでした。

4

0 に答える 0