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

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

Реклама

Perl для IP-Телефонии (40 – Модуль IO::Роll, часть 12)

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

Если при выполнении функции syswrite () возникла ошибка, отличная от EWOULDBLOCK, вы­полнение завершается с сообщением об ошибке.

Строки 49-58. Блок continue {}. Вся логика программы заключена в блоке continue {), который выполняется в конце каждого прохода по циклу. Его задача состоит в создании масок событий для трех дескрипторов, подходящих для следующего прохода по циклу. Выполнение блока начинается с установки трех масок в значение 0, предусмотренное по умолчанию, которое приведет к удалению дескриптора из опрашиваемого набора, если оста­нется неизменным. Затем выполняется проверка буфера $to_stdout. Если он содержит дан­ные, то для дескриптора STDOUT устанавливается маска pollout, которая указывает, что ме­тод poll () должен сообщить, когда этот дескриптор будет готов для записи.

Аналогичным образом устанавливается маска pollin для дескриптора stdin, что равно­сильно просьбе сообщить, когда появятся данные для чтения из стандартного дескриптора ввода. Однако эта операция подавляется, если возникает одно из двух следующих условий: длина буфера, содержащего данные, которые подготовлены для отправки в сокет, уже достигла максимального значения, поэтому нельзя допустить его дальнейшего возрастания; закрыт сам сокет или стандартный дескриптор ввода. Подобным методом можно также организовать диалог, к примеру, серверного приложения и коммутатора catalyst от компании Cisco, который имеет веб интерфейс и поддержку Telnet.

Теперь необходимо установить маску для сокета. В отличие от стандартного дескриптора вво­да или вывода, сокет применяется и для чтения, и для записи. Если имеются данные для за­писи в сокет (буфер $to_socket имеет ненулевую длину) и сокет не был ранее закрыт, то его маска устанавливается равной pollout.

2015-01-17 22:12:21

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


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


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


РЕКОМЕНДУЕМ

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