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

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

Реклама

Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 20)

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

Еще одно важное различие между модулями IO::Socket и IO::SessionData стоит в том, что объекты IO::SessionData не являются дескрипторами файлов. Нельзя непосредственно вызывать функции sysread () или syswrite () с использованием в качестве параметра объектов SessionData. Операции ввода-вывода следует всегда выполнять с помощью вызова методов read () и write ().

Неблокирующий сервер с построчным вводом-выводом

Сам модуль IO::SessionSet не позволяет выполнять построчное чтение, но эта возможность предоставляет его подкласс IO::LineBufferedSet. Далее рассмотрен еще один вариант психотерапевтического сервера Eliza, созданный на основе этого класса. Проведем анализ программы.

Строки 1-14. Инициализация сценария. Начало сценария во многом аналогично другим сце­нариям этого типа. Основное различие состоит в том, что импортируется модуль IO::LineBufferedSet и создается новый набор сеансов с использованием этого класса.

Строки 15-17. Главный цикл. Главный цикл начинается с вызова метода wait () набора се­ансов. Он возвращает список объектов SessionData, готовых для чтения. Некоторые из них представляют объекты SessionData, которые уже встречались при предыдущих проходах по циклу; другие же являются новыми сеансами, которые были созданы при вызове методом wait () функции accept () для приема нового входящего соединения. Эта особенность может быть особенно полезна при обработке вызовов поступающих в кулцентр обработки.

Строки 18-23. Создание новых объектов chatbot. Для проведения различия между новыми и старыми сеансами выполняется проверка хеша % sessions. Если это— новое входящее соединение, то запись для него в хеше % SESSI0NS отсутствуем и в этом случае создается новый объект chatbot::Eliza::Polite, который и сохраняется м хеше %SESSI0NS по индексу, представляющему собой объект SessionData. Вызывается метод welcome () объекта Eliza для получения вступительного приветствия, которое передается методу write () объекта SessionData и включается в очередь сообщений, передаваемых клиенту.



2014-08-22 13:37:58

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


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


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


РЕКОМЕНДУЕМ

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