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

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

Реклама

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

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

3) Вызов функции accept () с указанием тайм-аута. Теперь программа входит в стандартный цикл accept (), который отличается лишь тем, что вызов функции accept () заключен в блок eval {}. В блоке eval создается локальный обработчик сигнала alrm, кото­рый вызывает функцию die (), и используется функция alarm() для установки таймера, ко­торый сработает по истечении числа минут, указанных параметром $timeout. Затем вызыва­ется метод accept () приемного сокета. Если входящее соединение будет получено до истечения тайм-аута, то в результате выполнения блока eval {} будет создан подключенный сокет. В ином случае будет вызван обработчик сигнала alrm и выполнение блока eval {} за­кончится аварийно, с возвратом неопределенного значения. В последнем случае вызывается функция exit () и работа всего сервера прекращается. В ином случае вызывается функция alarm(0) для отмены тайм-аута.

4) Остальная часть сценария, устанавливаемая на выделенный сервер ,  остается неизменной. Включена также доработанная подпрограмма Chatbot::Eliza::_testquit (), которая позволяет избежать проблем, возникающих при неожиданном закрытии соединения пользователем.

Впервые разрабатывая эту программу, предполагалось, что можно просто использовать встроенный механизм тайм-аута модуля IO::Socket, а не разрабатывать собственную процедуру выхода по тайм-ауту на основе сигнала ALRM. Однако при этом возникла следующая проблема. При активизации встроенного механизма тайм-аута функция accept () возвращает значение undef и при возникновении законного тайм-аута, и при ее прерывании сигналом CHLD, которым сопровождает завершение каждого дочернего процесса. После некоторых проб и ошибок было решено, что нет простого способа различить эти два события, и применен специфический метод.



2014-06-20 01:48:05

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


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


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


РЕКОМЕНДУЕМ

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