Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TIdTCPClient: как блокирнуть сообщение о таймауте? не могу отследить, откуда оно вылазит 
:(
    Опции темы
AntonChik
Дата 27.8.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

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



собственно в коде всего лишь в двух местах вызывается 

Код

TIdTCPClient->Connect();


try/catch ни к чему не привели (может не совсем умело использую?)
т.е. каждый раз, как пропадает связь с машиной, где работает сервак,
на клиенте выскакивает "красное" окошко "Connect timed out"

что можно сделать, в каком месте отслеживать и перекрывать это сообщение?
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
leg501
Дата 27.8.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 31.1.2008

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



ну это ошибки обработанные самии инди   попробу вариант с обработчиком  "onerror" на стороне клиента помойму есть еще функция которая проверяе на таймут соединение

и еще как вариант на любое действие ставь try/catch  с проверкой подключено ли в действительности 

типа 

Код

try
if connect==true
sendmessage

catch
 senderror  //(в журнал событий добавляеш инфу об ошибки )

написано утрировано но так правильнее всего  тк пока клиент не совершит действий в сторону серва он не узнает что серв грохнулся 
также можно сделать что если на той стороне принудительно вырубили серв то в его закрытии чтоб он отослал всем что он типа упал и вы от меня отконектитесь (чтото типа как делает аська)
PM MAIL   Вверх
AntonChik
Дата 27.8.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

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



Цитата(leg501 @ 27.8.2008,  12:15)
если на той стороне принудительно вырубили серв то в его закрытии чтоб он отослал всем что он типа упал и вы от меня отконектитесь (чтото типа как делает аська)

OnError я не вижу :(

а по поводу того чтобы сообщить клиентам "я (сервак) мол падаю..."... дык интересен вариант, когда связь пропадает физически (резко то бишь), отвалился кабель или, например, я тестю отрубанием соответствующего сетевого соединения прям из винды...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
leg501
Дата 27.8.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 31.1.2008

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



мде перепутал с сокетом насчет обработчика onerror .
насчет посленднего замечания я не сказал что такой способ будет работать при так сказать физическом разрыве а вот при плавном падении процеса сработает .
сделать свой таймаут немного глупо хотя как длолгий вариант может подойти,
я бы порылся при каких имено моментах выскакивае твое ненависное окошко только доскональней и точнее и вставилбы свои проверки ,но это тыкать надо (например если оборвать связь что происходит если клиент делает чтото и что имено или если не делает нечего может удастся предупреждать моменты работы с отрубленым сервом)


PM MAIL   Вверх
AntonChik
Дата 28.8.2008, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

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



в том то и дело что плавные разрывы замечательно отрабатыватся и если что легко перехватываются...
а вот на таймаут тупо выскакивает окошко...
буду конечно рыть дальше...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
AntonChik
Дата 12.9.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

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



справился-таки со своей бедой... 
весьма банально все оказалось.
подменяем обработчик Application->OnException на свой

Код

void __fastcall TForm1::MyExcept(System::TObject* Sender, Sysutils::Exception* E) 
{
 ShowMessage(E->Message); // например
}


ну и  в FormCreate не забыть

Код

Application->OnException=MyExcept;


Это сообщение отредактировал(а) AntonChik - 12.9.2008, 11:48
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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