...wird mir gethrowt, wenn ich mehrmals versuche, mit einen ObjectInputStream zu lesen.
An falschen Instanzen liegt es nicht, ich verwende nur 2 Methoden, und das Serialisierte Objekt ist final. (JavaDoc: "Control information in the stream is inconsistent.")
Das komischere finde ich, dass die Exception nach einer variablen Anzahl von empfangenen Objecten von der Methode readObject() fliegt.
Hat damit zufällig schon jemand Erfahrung gemacht? Ich habe gelesen, dass es daran liegen kann, dass ich jedes mal eine neue Stream-Instanze erstelle, aber das hat dass Problem leider nicht gelöst.
An falschen Instanzen liegt es nicht, ich verwende nur 2 Methoden, und das Serialisierte Objekt ist final. (JavaDoc: "Control information in the stream is inconsistent.")
Das komischere finde ich, dass die Exception nach einer variablen Anzahl von empfangenen Objecten von der Methode readObject() fliegt.
Hat damit zufällig schon jemand Erfahrung gemacht? Ich habe gelesen, dass es daran liegen kann, dass ich jedes mal eine neue Stream-Instanze erstelle, aber das hat dass Problem leider nicht gelöst.
Java:
public synchronized Command readCommand()
{
Command command = null;
try
{
if(inputStream == null)
inputStream = new ObjectInputStream(socket.getInputStream());
command = ((Command)(inputStream.readObject()));
}
catch (SocketException e)
{
try
{
socket.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
return(command);
}
Java:
public void sendCommand(Command command)
{
try
{
ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
outputStream.writeObject(command);
}
catch (IOException e)
{
e.printStackTrace();
}
}
Java:
package core;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public final class Command implements CommandConstants, Serializable
{
private static final long serialVersionUID = 1L;
private String command;
private String location;
private List<String> parameterList;
public Command(String command, String location)
{
super();
this.command = command;
this.location = location;
this.parameterList = new ArrayList<String>();
}
public void addParameter(String parameter)
{
parameterList.add(parameter);
}
public String getCommand()
{
return(command);
}
public String getLocation()
{
return(location);
}
public String getParameter(int i)
{
return(parameterList.get(i));
}
}