Hi Leute!
ich bin in einem etwas größeren Projekt auf ein Problem mit meiner Serialisierung gestoßen.
Ich benutze nur Standard-Mittel von Java zu Serialisierung, sprich ObjectOutputStream.
Mein Ziel:
1.) Ich habe eine Instanz von einem Datenobjekt. Die Instanz bleibt immer die gleiche, aber die Daten ändern sich.
2.) Die Instanz wird mit dem ObjectOutputStream serialisiert und übers Netzwerk wohin geschickt.
3.) Dort wieder entpackt und fertig.
So einfach! ;(
Jetzt das Problem:
Ich serialisiere die Daten und verschicke es einmal. Die Daten kommen genauso an.
Die Daten (der gleichen Instanz) ändern sich, ich serialisiere nochmal und verschicke es, ABER die Daten die ankommen, sind die gleichen wie vor der Änderung Òó
Ich habe das ganze mal auf ein minimum Code herunter gebrochen:
In diesem Beispiel möchte ich EINE Instanz vom StringBuffer immer wieder verändern und verschicken können. Aber siehe da, das Problem kehrt wieder:
Server Seite:
Client Seite
Kann mir jemand sagen, ob ich da einfach irgendwas nicht verstanden habe oder,.....tja keine Ahnung was sonst :rtfm:
Wäre echt cool wenn sich jemand meinem Problem annimmt.
Danke im Voraus.
ich bin in einem etwas größeren Projekt auf ein Problem mit meiner Serialisierung gestoßen.
Ich benutze nur Standard-Mittel von Java zu Serialisierung, sprich ObjectOutputStream.
Mein Ziel:
1.) Ich habe eine Instanz von einem Datenobjekt. Die Instanz bleibt immer die gleiche, aber die Daten ändern sich.
2.) Die Instanz wird mit dem ObjectOutputStream serialisiert und übers Netzwerk wohin geschickt.
3.) Dort wieder entpackt und fertig.
So einfach! ;(
Jetzt das Problem:
Ich serialisiere die Daten und verschicke es einmal. Die Daten kommen genauso an.
Die Daten (der gleichen Instanz) ändern sich, ich serialisiere nochmal und verschicke es, ABER die Daten die ankommen, sind die gleichen wie vor der Änderung Òó
Ich habe das ganze mal auf ein minimum Code herunter gebrochen:
In diesem Beispiel möchte ich EINE Instanz vom StringBuffer immer wieder verändern und verschicken können. Aber siehe da, das Problem kehrt wieder:
Server Seite:
Java:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Server {
public static void main(String... args) {
try {
//Fürs Netzwerk
ServerSocket server = new ServerSocket(9000);
Socket socket = server.accept();
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objInput = new ObjectOutputStream(outputStream);
//Pseudo-Daten die sich ändern
int loops = 0;
//Datenobjekt
StringBuffer buffer = new StringBuffer(String.valueOf(loops));
while (true) {
//Hier ändern sich die Daten im datenobjekt
buffer.replace(0, buffer.length(), String.valueOf(loops));
objInput.writeObject(buffer);
objInput.flush();
System.out.println(buffer);
loops++;
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client Seite
Java:
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String... args) {
try {
Socket socket = new Socket("localhost", 9000);
InputStream inputStream = socket.getInputStream();
ObjectInputStream objInput = new ObjectInputStream(inputStream);
while (true) {
Object obj;
try {
//Hier die NEUEN Daten lesen
obj = objInput.readObject();
StringBuffer buffer = (StringBuffer) obj;
//Und hier wird man sehen, das sich die Daten NIE ändern?!?!?
System.out.println(buffer);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Kann mir jemand sagen, ob ich da einfach irgendwas nicht verstanden habe oder,.....tja keine Ahnung was sonst :rtfm:
Wäre echt cool wenn sich jemand meinem Problem annimmt.
Danke im Voraus.