Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > Обработка разрыва соединения IdTelnet (Indy) |
Автор: imdb 6.4.2009, 10:00 |
Delphi 2005, Indy 10.1.5 При работе с компонетом IdTelnet при разрыве связи возникает ошибка 10054. Соответственно генерится исключительная ситуация и показывается диалоговое окошко с ошибкой, которое закрывается пользователем. Хотелось бы избавится от этого, чтобы все шло "молчком". Отсюда возникают вопросы: 1. Где можно отловить возникновение этой исключительной ситуации? Среди событий данного компонента так и не нашел. В данный момент спасаюсь подавлением исключительных ситуаций на глобальном уровне на уровне приложения. 2. Как в данном случае (в случае разрыва связи) продолжить работу с данным компонентом? Сейчас в случае разрыва связи любое обращение к компоненту IdTelnet приводит опять к возникновению исключительных ситации. Заранее спасибо а помощь. |
Автор: Matematik 7.4.2009, 01:32 | ||
1. обычным try в except проверять тип исключения типа:
2. Связь разорвана, соответственно писать/читать из сокета нельзя. В кранем случае можно прочесть оставшиеся данные из внутреннего стека indy. |
Автор: ArthurX 2.6.2009, 13:34 |
Я знаю 4 варианта разрыва соединения: 1. Сервер внезапно отвалился 2. Сервер закрыл соединение по команде клиента (exit, logout...) 3. Клиент принудительно разорвал соединение (IdTelnet.Disconnect) 4. Клиент принудительно отключил сокет (IdTelnet.Disconnectsocket) Я, например делал так: if (IdTelnet.Connected=True) and (Badpassword=True) then IdTelnet.Disconnectsocket; При следующих коннектах никаких ошибок не появлялось, в отличие от IdTelnet.Disconnect (). А в самой делфе EIdDisconnect всегда будет появляться, все-таки это исключительная ситуация, по хорошему мы должны выйти командой exit, logout, quit и т.д. |