ソケットを使用してJavaネットワークをプログラミングし、Simpleオブジェクトを使用してリモートプログラム間でデータを交換しています。
現在のケースでは、ObjectInputStream
次を使用して構築されています。
new ObjectInputStream(Socket.getInputStream())
したがって、writeObject
メソッドを使用して、いくつかの文字列フィールドを含むオブジェクトを記述しています。
ただし、受信側は呼び出し時readObject
に常に同じオブジェクトを返します。
これを確認するために、文字列フィールドの 1 つを現在の時刻を格納するように設定しました。オブジェクトを書いている間、オブジェクトごとに常に異なる時間です。ただし、受信したオブジェクトはすべて、文字列フィールドに同じ時間を表示します。
明確に言えば、各呼び出しの後に返されるすべてのオブジェクトはObjectInputStream.ReadObject
、他のオブジェクトの正確なクローンです。
なぜこうなった?