0

サーバーを介してオブジェクトをアプリケーションのあるインスタンスから別のインスタンスに (そして非常に迅速に) 渡す必要があるアプリケーション (マルチプレイヤー ゲーム) を作成しています。

これを行うためにソケットを使用ObjectOutputStreamsして取得しています。ObjectInputStreams

ただし、渡されるオブジェクトの状態は常に更新されているため、通常のwriteObject()メソッドではうまくいきません (オブジェクトを 1 回だけ書き込み、その後呼び出されたときにオブジェクトへの参照を渡します。つまり、そのインスタンスの値です)。変数が実際に更新されることはありません)。

これを「修正」するために、 をObjectOutputStream.reset()呼び出すたびにメソッドを呼び出してきましたwriteObject()。これにより、オブジェクトの状態を更新する問題が解決されます。ただし、実行が遅すぎます。これは、「更新」ごとにオブジェクト全体が渡された結果であると思います。

私の質問は、オブジェクトを完全に書き直すことなく、ネットワーク経由で渡しているオブジェクトの状態を更新するにはどうすればよいかということです。(これが私が物事をスピードアップする方法であると仮定しています。間違っている場合、または他の方法が存在する場合は、共有してください)アドバイスをよろしくお願いします!

また、渡されるオブジェクトのサイズに関しては、大きすぎません... 2 つのブール変数、2 つの double 配列、およびその他のマイナー変数 (それぞれ別のリストを含む長さ 1000 のリストはありません)。

4

1 に答える 1

1
  1. とソケットのBufferedOutputStream間に使用します。ObjectOutputStream
  2. とソケットのBufferedInputStream間に使用します。ObjectInputStream
  3. 毎回またはflush()_writeObject()writeUnshared().
于 2012-06-18T04:07:49.933 に答える