Прежде всего, я знаю, и я знаю, что это дублированный вопрос, но в других ответах я просто не могу это понять!
Итак, я делаю подключение Client-Server с помощью сокетов java. У меня есть класс с именем Listener, который, каждый раз, когда я получаю новый клиент, я назначаю его клиенту. Затем я неоднократно слушаю клиента, и если я получаю ответ от клиента, я отправляю его методу в интерфейсе «класс» (эта последняя вещь не совсем об этом вопросе, но я не хочу, чтобы кто-либо спрашивая об этом)
Мой код:Java - Ошибка StreamCorruptedException: недопустимый код типа: AC
while(!s.isClosed()){
ob = new ObjectInputStream(s.getInputStream());
try {
handler.objectReceived(ob.readObject(), instance);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Где «s» является сокет, и «О.Б.» является ObjectOutputStream, и «обработчик» это интерфейс упоминалось выше. Но через некоторое время, используя его, я получаю ошибку java.io.StreamCorruptedException: недопустимый код типа: AC в строке handler.objectReceived(ob.readObject(), instance);
...
Любая помощь ??
ПРИМЕЧАНИЕ: пожалуйста, не отмечайте этот вопрос как дубликат. Я не могу понять другие ответы, и я просто прошу кого-то объяснить это ясно. После этого мода может удалить его, если захотят, ответьте! Я просто очень раздражаюсь этой ошибкой!
Вы также можете опубликовать код, в котором вы отправляете объект через сокет. – AntJavaDev
Здесь нет никакой тайны. Вы делаете именно то, что мой ответ в дубликате говорит, что не делать. Создайте 'ObjectInputStream' вне цикла. NB 'isClosed()' не является подходящим условием завершения. Правильное условие - это «EOFException». – EJP
Я вывел его за пределы цикла, и он все еще дает ошибку ... – JHacking