Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (42 – Протокол UDP , часть 17)

предыдущая часть ««»» следующая часть

Строки 11-20. Отправка запроса всем хостам. Теперь запрос направляется каждому хосту,  указанному в командной строке. Это к примеру может быть хост http://itfactory.com.ua/contextual-advertising/ , представляющий информацию по контекстной рекламе. Для преобразования имени каждого хоста в упакованный IP-адрес применяется функция inet_aton (), а с помощью функции sockaddr_in () созда­ется соответствующий адрес назначения.

Теперь происходит отправка запроса на сервер службы времени, работающий на указанном хосте. Как и прежде, конкретное содержание запроса не имеет значения. Если метод send() указывает, что сообщение было успешно поставлено в очередь, наращивается счетчик $host_count. В ином случае вызывается предупреждающее сообщение об этой ошибке.

Строки 21-32. Ожидание ответов. Теперь программа переходит в состояние ожидания на указанный константой timeout период (в секундах) до тех пор, пока не поступят все ответы. При получе­нии всех ожидаемых ответов выход из цикла происходит преждевременно. Для установки тайм-аута вызывается функция alarm (), и программа входит в цикл, при каждом проходе по которому умень­шается значение переменной $host_count. В теле цикла вызывается метод recv(). Если метод recv () возвращает ложное значение, это значит, что возникла ошибка, поэтому выводится содержимое переменной $! и происходит переход к следующей итерации цикла.

Метод recv () в случае успешного выполнения помещает полученное сообщение в переменную $daytime. Теперь предпринимается попытка определить имя хоста отправителя только что полученного сообщения.

Напомним, что в модуле IO::Socket::inet предусмотрено удобное средство — запоминание адреса второго участника обмена данными, полученного при последнем (по времени) вызове метода recv (). Выполняется выборка этого адреса путем вызовы функции peeraddr() и передача его функции gethostbyaddr () для преобразования в доменное имя. Если выполнение функции gethostbyaddr() оканчивается неудачей, вызывается метод peerhost () сокета для преобразования упакованного адреса другого участника обмена данными в строку IP-адреса в виде четырех чисел, разделенных точками.

2015-03-14 18:20:30

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония