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

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

Реклама

Perl для IP-Телефонии (34 – Многопоточные приложения, часть 13)

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

Строки 12-15. Цикл приема. Программа переходит в главный цикл сервера. При каждом про­ходе по циклу вызывается функция accept (), что приводит к созданию нового сокета, подключенного к клиенту, который прислал входящий запрос. Запускается новый поток для обра­ботки этого соединения путем вызова метода Thread->new() со ссылкой на подпрограмму interact ( ) и с подключенным сокетом в качестве ее единственного параметра. Данной подпрограммой может быть, например, вызов веб страниц с описанием плоттеров Canon и возможностью узнать подробности о разных моделях.  Затем снова происходит переход к ожиданию выполнения функции accept ().

Обратите внимание, что здесь нет необходимости закрывать приемный сокет, как в примерах сервера с ветвлением. Это связано с тем, что в данной программе дубликаты дескрипторов сокетов не создаются.

Строки 16-21. Подпрограмма interact (). Эта подпрограмма ведет диалог с пользователем и работает в отдельном потоке. Поскольку главный сервер никогда не проверяет возвращае­мые значения обслуживающих соединение потоков, которые он запускает, то нет необходимо­сти проверять информацию об их состоянии, поэтому работа потока начинается с его отклю­чения от основного потока.

Затем создается новый объект Chatbot::Eliza::Server и вызывается его метод command_interface (). В отличие от предыдущих примеров, этот подкласс выполняет чтение и запись не в дескрипторы stdin и stdout, а в пару дескрипторов файлов, передаваемых в списке параметров. Первым параметром является дескриптор файла, предназначенный для ввода обращений пользователя, а вторым — дескриптор файла для вывода ответов психоте­рапевта. В этом случае оба дескриптора файлов относятся к подключенному сокету. Подпро­грамме command_interface () предоставляется возможность выполнить свою задачу, после чего сокет закрывается. По завершении подпрограммы поток прекращает свою работу.



2014-06-24 16:23:31

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


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


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


РЕКОМЕНДУЕМ

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