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.