|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
||||||||||||||||
Java.net.SocketException: Connection reset при обработке события кнопки05.08.2018, 19:47. Показов 9721. Ответов 12
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане! Разбираюсь с логикой работы клиента и сервера. Вот такой вопрос возник. Есть сервер, который выбирает из файла случайную строку и по запросу отправляет клиенту. Запрос делается по нажатию кнопки в клиенте. Все просто. Но вылетает исключение java.net.SocketException: Connection reset. Стэк указывает на обработчик события кнопки. Вот код:
(сервер)
Для ясности я отправляю серверу текстовое сообщение, по которому вызывается метод, генерирующий строку. В исключении указывается строка 27 клиента. Искал инфу в инете по этому исключению, но так, честно говоря, и не понял, что мне с этим делать. Помогите пожалуйста разобраться. Спасибо! Добавлено через 7 часов 34 минуты Выяснилось, что дело не самом обработчике кнопки. А в том, что строка из файла не отправляется. Я это выяснил, когда вместо потока DataIputStream попытался использовать Scanner.nextLine(). Появилось сообщение, что строка отсутствует... Но почему? Метод getAphorism() рабочий, проверено. Добавлено через 13 минут Но оказалось, что и не методе дело... Не передается даже простое сообщение. В чем все-таки дело? Где собака зарыта?
0
|
||||||||||||||||
| 05.08.2018, 19:47 | |
|
Ответы с готовыми решениями:
12
Netty exceptions (java.net.BindException, Connection reset by peer) java.net.SocketException Java.net.SocketException: помогите |
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
||||||
| 06.08.2018, 16:07 [ТС] | ||||||
|
Так и не получил ни одного ответа. Наверно выходные сказались). Решил пойти от простого к сложного, чтобы понять причину исключения. Немного изменил код клиента и сервера,но в принципе все то же. И получил исключение при попытке записи текста из потока Scanner в Label. Погуглил, нашел инфу, что якобы изменять элементы интерфейса во время работы программы можно только из потока JavaFX и нужно использовать Platform.runLater(). Но не помогло... Нужна ваша помощь).
Клинет:
Exception in thread "JavaFX Application Thread" java.lang.IllegalStateException: Scanner closed at java.util.Scanner.ensureOpen(Scanner.jav a:1070) at java.util.Scanner.findWithinHorizon(Scan ner.java:1670) at java.util.Scanner.nextLine(Scanner.java: 1538) at ClientTest.getAphorism(ClientTest.java:1 03) at ClientTest.access$000(ClientTest.java:17 ) at ClientTest$1.run(ClientTest.java:43) at com.sun.javafx.application.PlatformImpl. lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivile ged(Native Method) at com.sun.javafx.application.PlatformImpl. lambda$runLater$173(PlatformImpl.java:29 4) at com.sun.glass.ui.InvokeLaterDispatcher$F uture.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._run Loop(Native Method) at com.sun.glass.ui.win.WinApplication.lamb da$null$147(WinApplication.java:177) at java.lang.Thread.run(Thread.java:748)
0
|
||||||
|
Автоматизируй это!
|
|
| 06.08.2018, 18:16 | |
|
Njula, не читал,
сделал усилие и код посмотрел, не очень внимательно: а) перед юзанием сканнера в методе убедись, хотя бы что хэзНекст() б) разве в 38 и 41 строке ты не открываешь и тут же закрываешь клиент (в том числе и сканнер его) ?
1
|
|
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
|||||||||||
| 07.08.2018, 14:27 [ТС] | |||||||||||
|
Спасибо, уважаемый Welemir1! За ответ и за усилие, приложенное для просмотра моего далекого от совершенства кода). За что же меня осуждаете? Я только учусь, бывает беру код из разных примеров, пытаюсь применить, осмыслить. Не всегда получается. Действительно закрытие сканера и клиента было не к месту. Также нужно было внести создание Random rand в тело метода getAphorism(), тут тоже нашлась ошибка, все-таки он не работал. Вот последняя реинкарнация моего кода (сделал как можно проще):
0
|
|||||||||||
|
Автоматизируй это!
|
||
| 07.08.2018, 14:48 | ||
|
пока читать твой код нет сил, тут на работе насмотришься))) обязательно читай местную статью про дебаггер!
0
|
||
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
|
| 07.08.2018, 21:11 [ТС] | |
|
Обязательно почитаю)
Добавлено через 5 часов 58 минут Debug хорошая штука. Он помог мне найти ошибку. Счетчик count нужно обнулять. И улучшить алгоритм. В целом работа программы как на ладони. Но здесь связка сервер-клиент... Да, сервер после первой итерации получает строку и, когда она отправляется в исходящий поток появляется окно. Нажимаешь кнопку, текст появляется. Дальше жму F7 и снова переход в метод выбора строки. После чего к отправке, отправляется. Естественно ничего не открывается, окно открыто. Нажимаешь кнопку - ничего. Вот подскажите в чем тут дело?) Подозреваю, что все очень просто, но хоть убей)...
1
|
|
|
Автоматизируй это!
|
||
| 08.08.2018, 05:55 | ||
|
Njula, ой-вей, тут много в чем может быть дело:
1) посмотри дебаггером -после нового нажатия происходит то, что должно происходить за кулисами? 2) ты вот про это? 3) возможно нужно перерисовывать элемент
0
|
||
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
||||
| 08.08.2018, 13:28 [ТС] | ||||
|
вот...тут видимо кроется мое непонимание. Я полагаю, что при при нажатии кнопки раз за разом происходит обращение к входящему потоку, в который сервер в цикле посылает разные строки. Как-то так. Но видимо все иначе происходит. Хотелось бы понять эту логику.
0
|
||||
|
Автоматизируй это!
|
||
| 08.08.2018, 14:26 | ||
|
попробуй те строки что нужны присваивать переменной статик и в листенере именно эту статик переменную присваивать в текстовое поле
1
|
||
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
|
| 08.08.2018, 14:32 [ТС] | |
|
)) Спасибо! Конечно! У меня так и было изначально, не работало, но по другой причине. И тогда я ввел эту переменную text. Вернул вызов метода получения строки в аргумент и все заработало!!! Спасибо!
0
|
|
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
||||||
| 08.08.2018, 14:53 [ТС] | ||||||
|
Все, да не все). Афоризмы меняются при нажатии. Написал обработчик закрытия окна
Добавлено через 1 минуту Ну, спасибо, Wlemir1, чтобы я без ваших советов делал). Добавлено через 9 минут Если сервер остановить и снова все запустить - работает до закрытия окна. Добавлено через 2 минуты То есть, чтобы клиент работал, нужно перезапустить сервер.
0
|
||||||
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
|
| 09.08.2018, 21:53 [ТС] | |
|
Сделал все тоже самое, но только с многопоточным сервером и... клиент перестал зависать! Все работает! Wlemir1 - риспект).
0
|
|
| 09.08.2018, 21:53 | |
|
Помогаю со студенческими работами здесь
13
Java.net.SocketException: Socket closed Connection refused: connect в java.net.Socket Генерация события при обработке другого события В обработке события клика кнопки увеличить значение переменной на единицу
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|