java.io.StreamCorruptedException: неверный заголовок потока: 00000001

Я продолжаю получать это получить это:Exception

java.io.StreamCorruptedException: invalid stream header: 00000001

На стороне сервера я использовал это для отправки и получения int, работает нормально.

Сервер:

new DataOutputStream(player1.getOutputStream()).writeInt(P1);

Клиент:

dataFromServer = new DataInputStream(socket.getInputStream());
dataFromServer.readInt();

Но когда я пытаюсь отправить объект, как это, он выдает ошибку.

Сервер:

new ObjectOutputStream(player2.getOutputStream()).writeObject(gameCrossword);

Клиент:

objectFromServer = new ObjectInputStream(socket.getInputStream());
crossword = (Crossword)objectFromServer.readObject();

Любая помощь будет хорошей. Вот я отправляю кроссворд в начале игры

Я изменил код, чтобы использовать только потоки объектов, а не потоки данных, по совету jtahlborn

сервер

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);

клиент

              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);

С уважением, C.

Ответы на вопрос(1)

Ваш ответ на вопрос