![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
imdb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.1.2009 Где: ЮФО Репутация: нет Всего: нет |
Delphi 2005, Indy 10.1.5
При работе с компонетом IdTelnet при разрыве связи возникает ошибка 10054. Соответственно генерится исключительная ситуация и показывается диалоговое окошко с ошибкой, которое закрывается пользователем. Хотелось бы избавится от этого, чтобы все шло "молчком". Отсюда возникают вопросы: 1. Где можно отловить возникновение этой исключительной ситуации? Среди событий данного компонента так и не нашел. В данный момент спасаюсь подавлением исключительных ситуаций на глобальном уровне на уровне приложения. 2. Как в данном случае (в случае разрыва связи) продолжить работу с данным компонентом? Сейчас в случае разрыва связи любое обращение к компоненту IdTelnet приводит опять к возникновению исключительных ситации. Заранее спасибо а помощь. |
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
1. обычным try
в except проверять тип исключения типа:
2. Связь разорвана, соответственно писать/читать из сокета нельзя. В кранем случае можно прочесть оставшиеся данные из внутреннего стека indy. |
|||
|
||||
imdb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.1.2009 Где: ЮФО Репутация: нет Всего: нет |
Тут не совсем так все происходит. Все действия с компонентом IdTelnet я "обернул" в try...except, но есть еще сообщения, которые появляются только в отладчике.
Тут о другом речь. Но я пока справился с проблемой. Если еще возникнут вопросы - обязательно спрошу. Спасибо что откликнулись! Это сообщение отредактировал(а) imdb - 10.4.2009, 11:17 |
|||
|
||||
ArthurX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 2.6.2009 Репутация: нет Всего: нет |
Я знаю 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 и т.д. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |