Разное - getbyname

Аватара пользователя
Jonik-Mnimonik

Разное - getbyname

Сообщение Jonik-Mnimonik »

Здравствуйте. У меня возникла следующая проблема. Когда я в командной строке пишу "ping -n 1 google.ru", то у меня выдаёт результат без всяких задержек, а вот когда я делаю пинг на несуществующий сервер "ping -n 1 zzz.ttt", то у меня происходит перед выводом результата задержка примерно в 3 секунды, что существенно удлиняет время работы программы, которая пингует сеть. Я думаю что в команде ping есть функция getbyname, которая и осуществляет задержку.

Как мне попробовать расковырять эту функцию, или есть другие способы обойти эту проблему?
Аватара пользователя
lxa85

Re: Разное - getbyname

Сообщение lxa85 »

Jonik-Mnimonik, Задержку осуществляет технология передачи и распространения ICMP пакетов. (ARP туда же.)

Другие способы - использовать мультипотоковый ping. Верней мультипотоковую рассылку echo ICMP пакетов.

Расковырять - добро пожаловать за исходниками.
Аватара пользователя
Jonik-Mnimonik

Re: Разное - getbyname

Сообщение Jonik-Mnimonik »

Благодарю, за ответы.
Аватара пользователя
Jonik-Mnimonik

Re: Разное - getbyname

Сообщение Jonik-Mnimonik »

Jonik-Mnimonik, начни все же с изучения протоколов, честно. ICMP, UDP, ARP, Маршрутизация.


Цитата Jonik-Mnimonik:



а не будет ли у меня этот echo пакет идти долгое время?
Разное - getbyname




Будет. И это не будет ошибкой. Кроме того echo-ответ можно блокировать средствами брандмауэра.

Может тебе проще взять готовую утилиту? С исходников Linux например? Или это задание по обучению/курсам повышения квалификации и т.д.?
Аватара пользователя
lxa85

Re: Разное - getbyname

Сообщение lxa85 »

У меня в одном домене допустим 20 компьютеров, и мне необходимо узнать кто за компьютером работает в данный момент времени(или вообще осуществить какое-либо другое действие), но для того чтобы осуществить какое-либо действие мне необходимо проверить "А вообще компьютер включен?". Вот и стоит задача как можно быстро осуществить пинг этого домена, а то я что-то не люблю когда всё глючит))
Аватара пользователя
Jonik-Mnimonik

Re: Разное - getbyname

Сообщение Jonik-Mnimonik »

У меня в одном домене допустим 20 компьютеров, и мне необходимо узнать кто за компьютером работает в данный момент времени(или вообще осуществить какое-либо другое действие), но для того чтобы осуществить какое-либо действие мне необходимо проверить "А вообще компьютер включен?". Вот и стоит задача как можно быстро осуществить пинг этого домена, а то я что-то не люблю когда всё глючит))
Аватара пользователя
Jonik-Mnimonik

Re: Разное - getbyname

Сообщение Jonik-Mnimonik »

Jonik-Mnimonik, что за функция getbyname ? Какой это ключ для команды ping ? -n ?


Цитата:



-n Numeric output only. No attempt will be made to lookup symbolic names for host addresses.



?


Цитата Jonik-Mnimonik:



Вот и стоит задача как можно быстро осуществить пинг этого домена
Разное - getbyname




Под Linux есть отдельное ПО для таких задач. Либо ищи в репозитории, либо подожди до понедельника, я тебе точнее скажу.

fping попробуй.
Аватара пользователя
lxa85

Re: Разное - getbyname

Сообщение lxa85 »

С опцией -n я как раз и делаю. fping тоже пробовал, возникает та же самая задержка. Могу подождать до понедельника, некоторые твои идеи я уже намотал на ус. Если удастся реализовать через распараллеливание процессов, то я думаю 3-х секундная задержка не помешает. Спасибо.
Аватара пользователя
Jonik-Mnimonik

Re: Разное - getbyname

Сообщение Jonik-Mnimonik »

Цитата Jonik-Mnimonik:



Когда я в командной строке пишу "ping -n 1 google.ru", то у меня выдаёт результат без всяких задержек, а вот когда я делаю пинг на несуществующий сервер "ping -n 1 zzz.ttt", то у меня происходит перед выводом результата задержка примерно в 3 секунды
Разное - getbyname




Есть такая чудная вещь как DNS сервер, к которому обращается утилита при попытке отрезолвить IP адрес машины по его имени. В случае с google.ru запрос лежит в кеше и ответ приходит моментально. В случае несуществующих машин идет сначала опрос кеша DNS, потом самих записей в зонах, потом все зависит от настроек DNS - либо идет поиск внешних адресов, либо выдается сообщение об отсутствии такого адреса.

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

Для C# есть одна очень хорошая книга - "C# Сборник рецептов" от Павла Агурова - там на 153 и 155 странице все это очень подробно расписано. Если есть желание - найди её, в djvu формате она выложена в инете.
Аватара пользователя
Delirium

Re: Разное - getbyname

Сообщение Delirium »

оказался все же nmap + графическая оболочка к нему Zenmap облегчающая задание параметров сканирования.
Ответить

Вернуться в «Программирование и базы данных»