java.io.StreamCorruptedException: Ungültiger Stream-Header: 00000001
Ich bekomme das immer wiederException
:
java.io.StreamCorruptedException: invalid stream header: 00000001
Serverseitig habe ich dies verwendet, um int zu senden und zu empfangen, funktioniert einwandfrei.
Server:
new DataOutputStream(player1.getOutputStream()).writeInt(P1);
Klient:
dataFromServer = new DataInputStream(socket.getInputStream());
dataFromServer.readInt();
Aber wenn ich versuche, ein Objekt wie dieses zu senden, wird der Fehler angezeigt.
Server:
new ObjectOutputStream(player2.getOutputStream()).writeObject(gameCrossword);
Klient:
objectFromServer = new ObjectInputStream(socket.getInputStream());
crossword = (Crossword)objectFromServer.readObject();
Jede Hilfe wäre gut. Hier sende ich das Kreuzworträtsel zunächst vor der Spielsitzung
Ich habe den Code geändert, um auf Anraten von Jtahlborn nur Objektströme anstelle von Datenströmen zu verwenden
Server
player1 = serverSocket.accept();
serverLog.append(new Date() + ": Player 1 joined session " + sessionNo + '\n');
serverLog.append("Player 1's IP address" + player1.getInetAddress().getHostAddress() + '\n');
new ObjectOutputStream(player1.getOutputStream()).writeInt(P1);
new ObjectOutputStream(player1.getOutputStream()).writeObject(gameCrossword);
player2 = serverSocket.accept();
serverLog.append(new Date() + ": Player 2 joined session " + sessionNo + '\n');
serverLog.append("Player 2's IP address" + player2.getInetAddress().getHostAddress() + '\n');
new ObjectOutputStream(player2.getOutputStream()).writeInt(P2);
new ObjectOutputStream(player2.getOutputStream()).writeObject(gameCrossword);
Klient
private void connectToServer() {
try {
Socket socket = new Socket(host, 8000);
objectFromServer = new ObjectInputStream(socket.getInputStream());
objectToServer = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException ex) {
System.err.println(ex);
}
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
try {
player = objectFromServer.readInt();
crossword = (Crossword)objectFromServer.readObject();
System.out.println(crossword);
Grüße, C.