Hallo,
ich schicke über einen ObjectOutputStream ein Objekt einer eigenen Klasse. Beide Klassen sind identisch im Server und im Client. Wenn ich serverseitig Änderungen am Objekt der Klasse vornehmen und dieses dann losschicke erhält der client das Objekt mit den alten Werten.
Um nicht überall die Objekte durchzuschleusen habe ich mir gedacht dass ich sie einfach per Singleton realisiere. Für die Übertragung über den Socket musste ich den Konstruktor schon public machen, damit das Objekt deserialisiert werden kann.
Der Server schickt die aktuellsten Objekte raus, aber der Client bekommt immer nur das selbe Objekt, das er zu Beginn bekommt.
Hier noch das was ich vom Server losschicke:
Der Client liest das so aus:
Das ist etwas unübersichtlich, aber vielleicht hatte jemand schon mal so ein Problem.
Irgendwie ist das, als würde Clientseitig das erste Objekt festklemmen und immer reproduziert werden beim Empfangen.
Beste Grüße
ich schicke über einen ObjectOutputStream ein Objekt einer eigenen Klasse. Beide Klassen sind identisch im Server und im Client. Wenn ich serverseitig Änderungen am Objekt der Klasse vornehmen und dieses dann losschicke erhält der client das Objekt mit den alten Werten.
Um nicht überall die Objekte durchzuschleusen habe ich mir gedacht dass ich sie einfach per Singleton realisiere. Für die Übertragung über den Socket musste ich den Konstruktor schon public machen, damit das Objekt deserialisiert werden kann.
Java:
import java.io.Serializable;
import java.util.LinkedList;
public class Spieldaten implements Serializable{
public static final long serialVersionUID = 1008;
public static Spieldaten spieldaten;
public LinkedList<String> spieler;
public Spieldaten(){
spieler = new LinkedList<String>();
}
public static Spieldaten getSpieldaten(){
if(spieldaten==null)
spieldaten = new Spieldaten();
return spieldaten;
}
public void addSpielerDaten(String spieler){
this.spieler.add(spieler);
}
//Neue Referenz auf das Spieldatenobjekt
public void setSpieldaten(Spieldaten spieldaten){
Spieldaten.spieldaten=spieldaten;
}
}
Der Server schickt die aktuellsten Objekte raus, aber der Client bekommt immer nur das selbe Objekt, das er zu Beginn bekommt.
Hier noch das was ich vom Server losschicke:
Java:
oos = new ObjectOutputStream(client.getOutputStream());
//... ausgelassen
while()
oos.writeObject(Spieldaten.getSpieldaten());
//... ausgelassen
Der Client liest das so aus:
Java:
inputObject = ois.readObject();
//.. Überprüfung welches Objekt reinkommt .. da ich verschiedene Klassen-Objekte sende
else if (inputObject.getClass()==Spieldaten.getSpieldaten().getClass()){
Spieldaten.getSpieldaten().setSpieldaten((Spieldaten) inputObject);
//... ausgelassen
Das ist etwas unübersichtlich, aber vielleicht hatte jemand schon mal so ein Problem.
Irgendwie ist das, als würde Clientseitig das erste Objekt festklemmen und immer reproduziert werden beim Empfangen.
Beste Grüße
Zuletzt bearbeitet: