java.io.StreamCorruptedException: nagłówek niepoprawnego strumienia: 00000001
Ciągle to dostajęException
:
java.io.StreamCorruptedException: invalid stream header: 00000001
Po stronie serwera użyłem tego do wysyłania i odbierania int, działa dobrze.
Serwer:
new DataOutputStream(player1.getOutputStream()).writeInt(P1);
Klient:
dataFromServer = new DataInputStream(socket.getInputStream());
dataFromServer.readInt();
Ale kiedy próbuję wysłać obiekt, tak jak ten, daje błąd.
Serwer:
new ObjectOutputStream(player2.getOutputStream()).writeObject(gameCrossword);
Klient:
objectFromServer = new ObjectInputStream(socket.getInputStream());
crossword = (Crossword)objectFromServer.readObject();
Każda pomoc byłaby dobra. Tutaj wysyłam krzyżówkę początkowo przed sesją gry
Zmieniłem kod, aby używać tylko strumieni obiektów, a nie strumieni danych, za radą jtahlborn
serwer
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);
pozdrowienia, C.