Быстрый пинг хоста
Есть ли способы ускорить работу функции gethostbyaddr? При запросе хоста отключенного от сети пинг занимает порядка пяти секунд, стоит, конечно, учитывать возможность загруженности сети, но ждать пока идёт опрос хотя бы сотни отключенных хостов нет возможности. Есть ли способы решить эту проблему? Плодить 254 параллельных процесса тоже не хочется. Может есть ещё какие-нибудь функции на эту тему?
Зачем плодить 254? Может можно, например, 15?;)
Цитата: Zorkus
Зачем плодить 254? Может можно, например, 15?;)
не, ну это я утрирую, конечно..просто по идее должен быть способ, хотя кто знает..буду искать..
Так что единственный выход - плодить процессы.
Цитата: Hydra
gethostbyaddr в принципе не ускоришь. Он пока через DNS адрес не разрешит не успокоится, а у того свои таймауты.
Так что единственный выход - плодить процессы.
Так что единственный выход - плодить процессы.
А других функций на эту тему(всмысле опроса сети) нет?
Тут зависит от точной ситуации. Что будет лучше - отдельными процессами пинговать, или через dns опрашивать. Так без данных не скажешь точно.
Цитата: Zorkus
Тут зависит от точной ситуации. Что будет лучше - отдельными процессами пинговать, или через dns опрашивать. Так без данных не скажешь точно.
Мне нужны только имена подключенных хостов. ТО есть у меня есть массив айпишников, например, 10.0.3.1-254, и нужно узнать кто есть кто(всмысле имя хоста) и есть ли вообще. А через dns с помощью чего опрашивать, и какие это даёт приемущества и недостатки?
Кстати, gethostbyaddr работает через NetBIOS? можно ли как-то сделать чтобы хост был подключён к сети, а gethostbyaddr его не видел(может блокирование фаерволом нетбиоса? но тогда, насколько я понимаю, вообще с сетью работать будет проблематично)?
пинги некоторые особо боязливые люди блокируют фаерами и т.п. но арпы они уже никак не закроют, потому что иначе сеть у них вообще работать не будет.
пинги некоторые особо боязливые люди блокируют фаерами и т.п. [/QUOTE]
Почему боязливые?:) Как начнут сканить автом. сканерами на предмет открытого чего-то. А тут пинга нету - и желающих ломиться наааамного меньше становиться:)
пинги некоторые особо боязливые люди блокируют фаерами и т.п. но арпы они уже никак не закроют, потому что иначе сеть у них вообще работать не будет.[/QUOTE]
Ну да, я в курсе, она у меня стоже стоит, впринципе нормально работает, правда с настройками иногда приходится париться, то работает нормально, то нет..А насчёт ARP запросов уже сам решил призадуматься, надо будет литературку порыть..Впринципе нафигарил всё-таки эти 254 параллельных процесса, работает(даже, кстати, определяет, больше чем НетВью, может от кривости рук моих зависит при настройках НетВью), загрузка проца 22 процента(Атлон64 3200+) где-то на секунду, потребление оперативки 10 мегабайт, загрузка сети до 0,25 процента примерно на 6 секунд, впринципе приемлемо.
Отправляешь запрос всем компам и ждешь, ответов...
а как на счет broadcast'ов|multicast'ов? отправляешь запрос на один адрес, а ответ приходит со всех :)
мультикаст тут тоже не катит, т.к. мультикаст работает на UDP протоколе, а пинг вообще работает на TCP. т.е. тут как минимум проблема в том, что машины слушают echo-порт TCP, а не UDP
(если я что-то намутил с терминологией, поправьте)
<SCORP> ping вобще не tcp не udp не исспользует. Читайте доки.
ну тогда мультикаст здесь вообще не при делах как класс!
я вообще не понимаю каким боком тут gethostbyaddr. если надо определить имена живых хостов - можно либо использовать ICMP echo, либо ARP WHOIS, а уж ПОТОМ - резолвить живые айпишники. это раз. и два - я не понимаю как зависит состояние хоста от разрешения его имени в DNS
во многих локальных сетях с виндовыми машинами DNS сервера нет как такогово. а если и есть, то машины пользователей сети на нём не зареганы. в таком случае gethostbyaddr пытается резолвить имена через SMB протокол (по идее через SMB...) так вот если машина выключена, то попытки отрезолвить её имя вызывают большие задержки
только не через SMB, а через NetBIOS... ну да, я все время забываю, что у мелкософта свои стандарты.
я вот тоже думал -- SMB или NetBIOS... пришёл к выводу, что всё-таки по SMB, потому что если в WinXP в службах отключить поддержку NetBIOS, то такое разрешение имён всё равно продолжает работать. да и вообще, помоему, начиная с NT4.0 протокол NetBIOS уже практически не используется и оставлен только для совместимости.