Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 25
от 08.02.2005, 20:20

Администратор:Калашников О.А. (adm@rusfaq.ru)
В номере:Вопросов: 2, Ответов: 7


Вопрос № 16573
Здравствуйте!
Я вот хочу пропингать все компьютеры в заданном диапазоне адресов.
Для этого я использую функции из ICMP.DLL:
IcmpCreateFile()
IcmpSendEcho()
IcmpCloseHandle()
Но дело в том, что если комп какой-то выключен, то IcmpSendEcho() долго молчит (несколько секунд), и есстественно если у меня больой диапазон адресов, то многие компы выключены и в итоге пинг всех компов занимает долгое время.
Вопрос такой: как можно уменьшить это время (какие может быть есть идеи) ?
или может быть подскажите другой способ пингования компа.
Заранее спасибо БОЛЬШОЕ!
С уважением, Ольга.
Может быть подскажите какие функции мне смотреть?
Отправлен: 03.02.2005, 04:12
Вопрос задала: rolechka (статус: Читатель)
Всего ответов отправлено: 5

Отвечает: DiGiT
Здравствуйте, rolechka!
Попробуйте использовать потоки. Не обязательно для каждого хоста создавать поток, можно например создать их 20 штук, и за каждым закрепить свой диапазон.
Ответ отправил: DiGiT (статус: 6-ой класс)
Отправлен: 03.02.2005, 09:51

Отвечает: Gibbel
Здравствуйте, rolechka!
Последний параметр функции IcmpSendEcho() определяет максимальное время, в течение которого будет ожидаться ответ. Посмотрите, сколько времени у вас занимает ping включенных машин, и установите соответствущее значение этого параметра.
Или используйте функцию IcmpSendEcho2().
Ответ отправил: Gibbel (статус: *Админ)
Отправлен: 03.02.2005, 11:27

Отвечает: vitya
Здравствуйте, rolechka!
1. делайте запросы в нескольких потоках
2. последний параметер SendEcho является задержкой - сколько ждать - задавайте ваше время.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 03.02.2005, 11:28

Отвечает: Bob Johnson
Здравствуйте, rolechka!
Для этого следует создать несколько потоков (например, 100) и каждому из них задать пинговать определенный адрес. тогда если пинг не отвечает неск. секунд (например 5), то ты получишь в среднем 100/5 = 20 адресов в секунду.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.02.2005, 15:41

Отвечает: John Freeman
Здравствуйте, rolechka!
Если в локалке - проще пытаться соединиться с 135,139,445 портами - быстрее будет+можно имя компа сразу получить+таймаут сама устанавливать сможешь.
Ответ отправил: John Freeman (статус: Практикант)
Отправлен: 04.02.2005, 00:10


Вопрос № 16580
Здравствуйте, ув. тов. эксперты.
Такая проблема: в обработку сообщения WM_DESTROY, как и положено,
пихаю PostQuitMessage(0). После того, как кликаю на крестик
закрытия окна, окно закрывается, но программа остается в памяти. Что
не так?

Приложение:

Отправлен: 03.02.2005, 11:39
Вопрос задал: Игорь-83 (статус: Читатель)
Всего ответов отправлено: 2

Отвечает: CrackLab
Здравствуйте, Игорь-83!
Дело в том, что когда вы кликаете на крестик, отсылается сообщение WM_CLOSE.
Но у вас нет обработчика этого сообщения. Поэтому допишите обработчик WM_CLOSE (в котором вызывайте PostQuitMessage(0) или ExitProcess(0))
или просто замените строчку
while(GetMessage(&msg,hWnd,0,0))
на
while(GetMessage(&msg,NULL,0,0))
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 03.02.2005, 12:10

Отвечает: Bob Johnson
Здравствуйте, Игорь-83!
В строке while(GetMessage(&msg,hWnd,0,0)) надо поставить 0 вместо hWnd, т.к. PostQuitMessage посылает сообщение WM_QUIT потоку, а не конкретному окну.

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 04.02.2005, 00:53


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться

В избранное