0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 28
|
|||||||||||
1 | |||||||||||
Ошибка "Connection closed gracefully" при отправке пакета данных серверу01.08.2019, 08:35. Показов 7370. Ответов 3
Метки нет (Все метки)
Разрабатываю навигационную программу.Возникла потребность получать координаты от нескольких пользователей программы. Использую Indy компоненты, а именно IdTCPServer и IdTCPClient. Сервер создается, клиент коннектится все нормально, при передаче данных возникает ошибка. Отправляю данные из таймера.
Прочитал много инфы по этой теме так ничего и не нашел относящегося к проблеме. Подскажите в чем тут дело.
0
|
01.08.2019, 08:35 | |
Ответы с готовыми решениями:
3
"Connection closed gracefully" при отправке по ftp Ошибка при отправки сообщения: connection closed gracefully Ошибка в программе //Connection Closed Gracefully Ошибка Connection Closed Gracefully, что делать? |
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
||||||||||||||||
01.08.2019, 12:50 | 2 | |||||||||||||||
Ну, перво-наперво: Connection closed gracefully означает, что сервер вполне себе штатно закрыл соединение. То ли общаться передумал, то ли обиделся.
Далее. Логика клиент-серверной архитектуры состоит в том, что инициатор общения - это клиент. И он же должен постоянно опрашивать сервер о состоянии. Можно, конечно, правильно разработать поток, в котором работает отдельно взятое соединение, и слать в сокет периодически данные, но для этого надо понимать происходящее и быть уверенным в том, что делаешь. Теперь по коду: непонятно что такое ClientLan. Плюс, оборот в try except у вас совершенно неинформативен: надо делать примерно так (у инди, если память не изменяет, свой класс для исключений):
Ну, перво-наперво: Connection closed gracefully означает, что сервер вполне себе штатно закрыл соединение. То ли общаться передумал, то ли обиделся. Далее. Логика клиент-серверной архитектуры состоит в том, что инициатор общения - это клиент. И он же должен постоянно опрашивать сервер о состоянии. Можно, конечно, правильно разработать поток, в котором работает отдельно взятое соединение, и слать в сокет периодически данные, но для этого надо понимать происходящее и быть уверенным в том, что делаешь. Теперь по коду: непонятно что такое ClientLan. Плюс, оборот в try except у вас совершенно неинформативен: надо делать примерно так (у инди, если память не изменяет, свой класс для исключений):
Да, еще небольшая правка:
1
|
0 / 0 / 0
Регистрация: 15.01.2018
Сообщений: 28
|
|
02.08.2019, 10:49 [ТС] | 3 |
ClientLAN - это как раз и есть IdTCPClient - компонент Indy.
Я немного другое читал о клиент-серверной архитектуре. То создается сервер, который слушает определенный порт, если на это порт приходят данные, то значит клиент подключен. Разобрался с проблемой "Connection closed gracefull". Оказалось, что на сервере при получении данных он из потока получения данных пытался обратиться к другому потоку это вызывало исключение и сервер сбрасывал подключение.
0
|
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
|
|
02.08.2019, 11:10 | 4 |
Да, это вполне возможный сценарий. Главное с такой ошибкой держать в голове, что соединение не "оборвалось", а было штатно закрыто сервером по каким-либо причинам.
Ну, это не совсем корректно. У TCP все крутится вокруг "тунеля". То есть, установив соединение, клиент и сервер как бы связаны невидимой нитью, поэтому корректнее говорить "если есть соединение, то клиент подключен". Это, на самом деле, тоже не на 100% правильно, так как в случае обрыва соединения ошибка обнаружится только при попытке отправить сообщение, но все же отсутствие данных не всегда означает, что клиент отключился. Ну и просто совет: с потоками поосторожнее. Если у вас не планируется использование прям нагруженной системы, количество одновременных подключений не превышает 10-20 клиентов, и в процессе ответа нет долгих операций, то стоит подумать о том, чтобы отказаться от потоков и работать синхронно.
1
|
02.08.2019, 11:10 | |
02.08.2019, 11:10 | |
Помогаю со студенческими работами здесь
4
Connection Closed Gracefully DE xe 10.4 Connection Closed gracefully Connection closed by gracefully connection closed gracefully Connection closed gracefully DE xe 10.3.3 Connection Closed gracefully Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |