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

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

Реклама

Perl для IP-Телефонии (44 – UDP Чат , часть 11)

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

Строки 41-53. Цикл обработки команд. Выполняется чтение команд, введенных пользователем со стандартного устройства ввода, и получение сообщений из сокета сервера. Функция select () позволяет проверять наличие входящих данных в обоих дескрипторах. Создается новый объект IO::Select, набор дескрипторов которого инициализируется для включения и сокета сервера, и дескриптора stdin. Сокет сервера заключен в оболочку объекта ChatObjects::Соmm, поэто­му для выборки дескриптора необходимо вызвать метод socket () этого объекта. Объектом, к примеру, может быть сервер, с которого мы хотим получить выгодный обмен валют WMZ на WMR по лучшему курсу .

При каждом проходе по циклу вызывается метод $select->can__read() для выборки тех де­скрипторов, в которых есть данные, предназначенные для чтения. Если одним из этих деск­рипторов является stdin, то вызывается подпрограмма do_user() для обработки команд пользователя. В ином случае вызывается подпрограмма do_server() для обработки сооб­щений, полученных из сокета.

Обратите внимание, вызов метода can_read () покажет, что дескриптор stdin готов для чте­ния, если пользователь вдруг закроет поток, нажав комбинацию клавиш, которая обозначает конец файла. Подпрограмма do__user () предусматривает специальную проверку признака конца файла EOF и возвращает ложное значение. После этого происходит выход из цикла и программа завершается.

Строки 64-66. Обработка команд пользователя. Подпрограмма do_user () считывает ко­манды со стандартного устройства ввода и переходит к выполнению кода, предназначенного для их обработки. Ее параметром является ссылка на шаблон типа *stdin, возвращенный функцией select (). Поскольку функция select () плохо сочетается со стандартной буфери­зацией ввода-вывода, для чтения из дескриптора stdin не применяется оператор угловых скобок.

2015-04-28 13:01:39

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


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


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


РЕКОМЕНДУЕМ

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