Мое первое предположение состоит в том, что получаемый вами входной поток не является действительным объектом потоком. ObjectInputStream
распознается определенным заголовком потока.
Однако важно не только понять это исключение, но и научиться анализировать исключения и сбои. Я предлагаю следующее:
- Проверьте вывод вашей программы (файлы журнала или консоль). Посмотрите, показывает ли он точный тип исключения и полную трассировку стека.
- Используйте отладчик. Поместите точку останова в проблемную строку, остановитесь там с помощью отладчика, а затем переходите к коду, пока не доберетесь до исключения.
EDIT:
Трассировка стека показывает, что ObjectInputStream
пытается прочитать значение short
из входного потока, но в потоке больше нет данных. Похоже, сервер не отправляет данные, которые вы ожидаете. (Или просто не отправляет никаких данных.)
Чтобы проанализировать данные, которые вы получаете из сокета, вы можете временно изменить код, чтобы он считывал из входного потока и выводил содержимое (например, на System.out
). Или вы можете использовать сетевой анализатор (например, Wireshark ), который покажет вам весь сетевой трафик между вашей машиной и сервером.