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

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

Реклама

Perl для IP-Телефонии (47 – Сокеты домена UNIX , часть 9)

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

Строки 9-12. Инициализация переменных. Полное имя сокета берется из командной строки или устанавливается по умолчанию равным константе sock_path. Переменная $columns модуля Text::wrap устанавливается равной ширине столбцов, она определена в константе columns.

Строки 13-16. Установка обработчиков сигналов. С помощью сигнала chld выполняется “уборка" всех завершившихся дочерних процессов, к примеру, это может быть лента предложений по ремонту компьютеров на дому http://vremont.dp.ua/remont-na-dom/ с использованием разновидности цикла waitpid(), рассмотренной ранее. Сервер должен также уничтожить файл сокета домена UNIX перед завершением работы, и по этой причине предусмотрен перехват сигналов int и term с помощью обработчика, ко­торый удаляет указанный файл, а затем обычным образом завершает работу.

Строки 17, 18. Установка значения umask. Явным образом значение umask устанавливается равным восьмеричному значению 0111, чтобы приемный сокет был создан как доступный для чтения и записи всем пользователям. Это позволяет любому процессу на локальном хосте взаимодействовать с сервером. Ведущий 0 должен быть обязательно указан, чтобы значение 011 интерпретировалось как восьмеричная константа. Если 0 будет опущен, интерпретатор Perl будет рассматривать это значение как десятичное число 111, которое означает совсем иное.

Строки 19-21. Создание приемного сокета. Вызывается метод IO::Socket::UNix->new() для создания приемного сокета домена UNIX по указанному адресу сокета, который обозначен полным именем. Параметр Listen установлен равным константе somaxconn, которая экспортируется модулями Socket и IO::Socket.

Строки 22-32. Цикл accept (). Этот цикл аналогичен циклам, применяемым в сервера: TCP/IP. Однако функция fork () вызывается через оболочку launch_child () по описанным ниже причинам. Функция interact () отвечает за взаимодействие с клиентом и работает в дочернем процессе.

Строки 33-42. Подпрограмма launch_chiid(). Данная подпрограмма представляет собой оболочку для функции fork(). Поскольку в родительском серверном процессе предусмотре­ны обработчики int и term, которые уничтожают файл сокета, нужно обязательно удалить их из дочерних процессов; в ином случае файл может быть уничтожен преждевременно.

2016-02-26 09:44:08

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


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


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


РЕКОМЕНДУЕМ

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