0

シリアライズ可能を実装するクラスを作成しました。サーバークライアントアプリケーションを介してオブジェクトを受信すると、最初のインスタンスしか取得できません。オブジェクトが何度変更されても、objectInputStream は最初に送信されたものだけを受信します。なぜですか?

これは実際にはスイング アプリケーションです。私のアプリケーションでは、chatpart と gamepart が同時に実行されています。

パネルはゲーム オブジェクトをサーバー/クライアント オブジェクトに送信します

this.getServer1().sendGame(panel1.getMyGame());


 public void sendGame(Game g1) throws IOException{
       output.writeObject(g1);
       output.flush();
   }

サーバーまたはクライアント部分がスレッドで実行されている

ゲームパートまたはチャットパートのいずれかからデータを読み取ります。チャットパートは正常に動作します

Object next = input.readObject();
if (next instanceof Game) {
    game1 = (Game)next;
    panel1.setHisGame(game1);
}
else if (next instanceof String) {
    message = (String)next;
    ...
}

ゲームクラスは、いくつかの String 属性を持つ単純なクラスであり、Serializable を実装します。

4

1 に答える 1

0

私はそれを解決しました。パネルが mygameobject をサーバーに送信する前に、新しいオブジェクト全体を作成し、そこに mygameobject のデータを入力する必要がありました。それが機能する方法です。

于 2012-10-08T13:39:04.450 に答える