Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка разрыва соединения IdTelnet (Indy), перехват и обработка ошибок 
:(
    Опции темы
imdb
Дата 6.4.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.1.2009
Где: ЮФО

Репутация: нет
Всего: нет



Delphi 2005, Indy 10.1.5
При работе с компонетом IdTelnet при разрыве связи возникает ошибка 10054. Соответственно генерится исключительная ситуация и показывается диалоговое окошко с ошибкой, которое закрывается пользователем. Хотелось бы избавится от этого, чтобы все шло "молчком". Отсюда возникают вопросы:
1. Где можно отловить возникновение этой исключительной ситуации? Среди событий данного компонента так и не нашел. В данный момент спасаюсь подавлением исключительных ситуаций на глобальном уровне на уровне приложения.
2. Как в данном случае (в случае разрыва связи) продолжить работу с данным компонентом? Сейчас в случае разрыва связи любое обращение к компоненту IdTelnet приводит опять к возникновению исключительных ситации.

Заранее спасибо а помощь.
PM MAIL   Вверх
Matematik
Дата 7.4.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



1. обычным try 
в except проверять тип исключения
типа:
Код

try
{indy код}
except
  on E:Exception do
 begin
    if E is EIdException do
    begin
    {  indy исключения }
    end
    else
    begin
      rraise; { не indy }
    end
  end
end


2. Связь разорвана, соответственно писать/читать из сокета нельзя. В кранем случае можно прочесть оставшиеся данные из внутреннего стека indy.
PM MAIL WWW ICQ   Вверх
imdb
Дата 10.4.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.1.2009
Где: ЮФО

Репутация: нет
Всего: нет



Цитата(Matematik @  7.4.2009,  01:32 Найти цитируемый пост)
1. обычным try в except проверять тип исключениятипа:

Тут не совсем так все происходит. Все действия с компонентом IdTelnet я "обернул" в try...except, но есть еще сообщения, которые появляются только в отладчике.
Цитата(Matematik @  7.4.2009,  01:32 Найти цитируемый пост)
2. Связь разорвана, соответственно писать/читать из сокета нельзя. В кранем случае можно прочесть оставшиеся данные из внутреннего стека indy.

Тут о другом речь. Но я пока справился с проблемой.
Если еще возникнут вопросы - обязательно спрошу. Спасибо что откликнулись!

Это сообщение отредактировал(а) imdb - 10.4.2009, 11:17
PM MAIL   Вверх
ArthurX
Дата 2.6.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 и т.д.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.