Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Оптимизация ping'а сети


Автор: Still 9.4.2008, 11:55
Такой вопрос:

я произвожу пинговку диапазона IP-адресов в локалке, результатом является строка: "IP 192.168.0.1 - (не) активен". Однако, если АйПи активен, то ответ пинга приходит незамедлительно, но если АйПи не активен, проходит порядка 2-3 секунд. Соответственно, если диапазон адресов достигает уже двух десятков, время на проверку уходит довольно много.

Есть одна идея, попробовать прервать запрос к конкретному АйПи, если ответ не приходит в течение 50 ms, но не знаю как это сделать.

PS Пинговку произвожу с помощью IdIcmpClient.

Спасибо!

+к этому: в момент пропинговки программа полностью подвисает и, соответственно, "достучаться" до каких-либо кнопок не реально, что с этим можно сделать?

Автор: Qu1nt 9.4.2008, 12:05
Пример с многопоточностью:
http://delphisources.ru/files/sources/internet/2007_year/ping_thread.zip

Автор: Alexeis 9.4.2008, 12:08
Цитата(Still @  9.4.2008,  10:55 Найти цитируемый пост)
Есть одна идея, попробовать прервать запрос к конкретному АйПи, если ответ не приходит в течение 50 ms, но не знаю как это сделать.

  Можно установить таймаут, а чтобы быстрее проверять, можно создать 20 потоков и в каждом из них пинговать свой IP, хотя насколько я знаю INDY и так поддерживают асинхронный режим.

Автор: MetalFan 9.4.2008, 12:40
Цитата(Alexeis @  9.4.2008,  12:08 Найти цитируемый пост)
хотя насколько я знаю INDY и так поддерживают асинхронный режим. 

вроде нет. там есть "псевдоасинхронность" - с IdAntiFreez

Автор: Still 10.4.2008, 13:18
Проблема решена. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)