![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TIdTCPClient таймаут [D6, WinXP]
avsam © (2009-05-19 17:38:00)Программа рассылает сообщения по сети с помощью TIdTCPClient.
Количество клиентов около 20. Сообщения рассылаются в отдельном Thread для каждого.
После этого ждется завершение.
Если клиент недоступен, TIdTCPClient.connect вылетает с таймаутом.
Этот таймаут длится очень долго.
Как можно быстро проверить, доступен ли клиент?
Есть ли возможность поменять таймаут для TIdTCPClient.
Delphi 6, Indy 8.025
Сергей М. (2009-05-26 16:42:00) [1]
> Обновил дл 9-й версии.
Надо было уж сразу до 10-ки..
> В чем задается таймаут?
В миллисекундах.
avsam (2009-05-26 16:30:00) [2]Обновил дл 9-й версии.
> TIdTCPClient.Connect(TimeOut)
В чем задается таймаут? Секунды, секунды*1000 или тики?
CrytoGen (2009-05-20 04:29:00) [3]Может тогда всё-же попробовать обновить инди до 9-го?
DVM (2009-05-20 00:15:00) [4]
> avsam
В Indy старых версий никак, вьсвое время отказался от инди в одной задаче именно по этой причине, т.к. не мог заврешить в приемлемое время пару десятков потоков, висящих на connect(). Сделал сам неблокирующий connect(), на неблокирующих сокетах.
Сергей М. (2009-05-19 22:15:00) [5]
> avsam (19.05.09 20:23) [2]
А что , в 8-ке нет св-ва ConnectionTimeout ? Я просто не в курсе ..
> Может можно сначала пинг проверять?
Целевое сервис может быть активным, но при этом целевое устройство не обязано отвечать на пингующие запросы. Мало того, любое устройство на маршруте от узла-источника к узлу-приемнику может и вправе выкидывать пингующие пакеты по капризу админов этого устройства.
Вот тебе реальный пример:
ping faktura.ru - шиш с маслом, будто бы хост не существует или недоступен
А теперь в браузере обратись по ссылке http://faktura.ru- расчудесно подключишься и получишь ответ web-сервера
avsam (2009-05-19 20:23:00) [6]Версия Indy 8.025 имеет только TIdTCPClient.Connect;
Эта версия стандартная, идет в поставке с Delphi 6.
Поменять на новую 10.1.5 не могу.
Может можно сначала пинг проверять?
CrytoGen (2009-05-19 19:21:00) [7]TIdTCPClient.Connect(TimeOut)