Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166

Java.io.StreamCorruptedException: invalid stream header

30.08.2017, 11:27. Показов 5952. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю клиент серверное взаимодействие на сокетах. Сейчас стоит задача на подключение новых клиентов к серверу и отправление списка подключенных клиентов всем клиентам.

Слушатель регистрирующий новых клиентов на сервере:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    private class ClientsListener extends Thread {
        /**
         * Счетчик подключенных к серверу клиентов
         */
        private int clientCount;
 
        public ClientsListener() {
            clientCount = 0;
        }
 
        @Override
        public void run() {
            while(true) {
                try {
                    Socket socket = serverSocket.accept();
                    if(socket != null) {
                        clientCount++;
                        clientsMap.put("Client: " + clientCount, socket);
 
                        //Оповещение клиентов о подключении нового клиента
                        notifyClients();
                        System.out.println("Client: " + socket.toString());
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
Метод который производит оповещение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   @Override
    public void notifyClients() {
        ArrayList<String> nameList = getKeys();
 
        for(Map.Entry<String, Socket> iter : clientsMap.entrySet()) {
            try {
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(iter.getValue().getOutputStream());
                objectOutputStream.flush();
                objectOutputStream.writeObject(nameList);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
На стороне клиента есть слушатель текущего списка клиентов
Java
1
2
3
4
5
6
7
8
9
10
    private class ClientsListener extends Thread {
        private final boolean isStarted = true;
 
        @Override
        public void run() {
            while(isStarted) {
                getClientsList();
            }
        }
    }
Метод getClientsList()
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @Override
    public void getClientsList() {
        try {
            ObjectInputStream objectInputStream = new ObjectInputStream(connection.getInputStream());
            try {
                clientsList = (ArrayList<String>) objectInputStream.readObject();
                System.out.println(clientsList.toString());
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Во время работы в логах клиента постоянно пишется:
java.io.StreamCorruptedException: invalid stream header: 69656E74
at java.io.ObjectInputStream.readStreamHead er(ObjectInputStream.java:808)
at java.io.ObjectInputStream.<init>(ObjectI nputStream.java:301)
at com.network.Network.getClientsList(Netwo rk.java:84)
at com.network.Network$ClientsListener.run( Network.java:123)

Сыпется конкретно на этой строке:ObjectInputStream objectInputStream = new ObjectInputStream(connection.getInputStr eam());

И на сервере и на клиенте используются ObjectInputStream \ ObjectOutputStream и методы readObject и writeObject.
Кто может подсказать в чем косяк?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2017, 11:27
Ответы с готовыми решениями:

Java.io.StreamCorruptedException: invalid type code: AC
Моя задача - написать игру PONG и сделать ее онлайновой. Через некоторое время работы клиента появляется исключение...

Как исправить ошибку StreamCorruptedException: invalid type code: AC
В файле есть 5 пользователей которые нужно добавить в HashSet, но при попытке это сделать возникает ошибка StreamCorruptedException:...

Java stream
Добрый день. Народ, подскажите пожалуйста, как собрать в потоке: Person('Иванов И. А.','01.01.2018','300') Person('Иванов И....

1
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166
03.09.2017, 10:06  [ТС]
Проблема была в том что потоки чтения \ записи каждый раз создавались новые. Решено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2017, 10:06
Помогаю со студенческими работами здесь

stream в java
Здравсвуйте есть код while ((fileStr = bufferedReader.readLine()) != null) { for (int i = 0; i &lt;...

Java stream findFirst() throw null
Есть строка: ElectricFurnaceRecipe recipe = list.stream().filter(item::equals).findFirst().orElseGet(null); Выдаёт краш: ...

Работа с коллекциями stream api java
Есть список строк List&lt;String&gt; y, Из данного списка я создаю карту ...

Java stream поиск по возрасту во вложенных списках
Как в одну строчку написать stream, который найдет из списка страны в котором есть список людей, людей возраст которых больше 28 лет ...

Java.util.concurrent.* или java.util.Stream
Как добавить библиотеку java.util.concurrent или java.util.Stream? Прошу, пожалуйста, помочь. import java.util.concurrent.locks.*; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru