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

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

Реклама

Perl для IP-Телефонии (33 – демон inetd, часть 6)

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

Новая версия психотерапевтического сервера, предназначенного для запуска с помощью демона inetd в режиме wait, будет описана ниже. Соответствующая запись в файле /etc/inetd.conf почти полностью совпадает с первоначальной, за исключением того, что в четвертом поле указана опция wait, а в шестом приведено другое имя сценария:

12000 stream tcp wait nobody /usr/local/bin/eliza_jlnetd.pl eliza inetd.pl

Этот сервер не только наследует приемный сокет от демона inetd, но и отличается от предыдущих версий тем, что предусматривает минутный тайм-аут при вызове функции accept (). Если в течение этого тайм-аута не поступит ни одного нового соединения, родительский процесс завершится и демон inetd повторно запустит сервер, когда он снова потребуется. Изменения, которые пришлось внести в основной сервер с ветвлением, оказались незначительными. Подобным сервером можно обрабатывать множественные запросы, например, на хост, содержащий информацию об высокопроизводительных принтерах HP или с другой информацией.

И так проведем анализ программы.

1) Определение значений тайм-аута. Значение тайм-аута берется из командной строки или устанавливается по умолчанию равным одной минуте, если соответствующий па­раметр не задан. Обратите внимание, что номер порта больше не считывается из командной строки, поскольку значение этого параметра неявно передается демоном inetd.

2) Восстановление дескриптора приемного сокета. Значение дескриптора прием­ного сокета восстанавливается из дескриптора stdin. Вначале происходит проверка, действи­тельно ли этот сценарий выполняется под управлением inetd, путем определения того, что де­скриптор stdin является сокетом, с использованием опции файловой проверки -s. Если деск­риптор stdin проходит эту проверку, он снова преобразуется в объект IO::Socket путем вызова метода new_from_fd() модуля IO::Socket. Этот метод, унаследованный от модуля IO:: Handle, аналогичен методу fdopen (), за исключением того, что, вместо переоткрытия су­ществующего дескриптора на базе указанного дескриптора файла, он создает новый дескриптор, который является копией старого. В этом случае создается новый объект IO::Socket, который является копией дескриптора stdin, открытого для чтения и записи.



2014-06-19 16:19:22

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


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


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


РЕКОМЕНДУЕМ

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