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

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

Реклама

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

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

Вместо чтения из дескриптора STDIN с помощью оператора <>, вызывается метод getline () объекта IO::Getline для чтения строки в переменную $data. Метод getline () может вернуть ложное значение, и в этом случае происходит выход из цик­ла, поскольку достигнут конец файла. В ином случае он может вернуть истинное значение. Если код результата больше 0, это значит, что получена строка, которая может быть выведена; поэтому строка копируется в стандартный вывод. В противном случае становится известно, что полная строка еще не считана, поэтому снова происходит воз­врат в начало цикла проверки дескриптора с помощью объекта IO::Select. Для использования данного модуля на мобильных телефонах предварительно необходимо скачать на андройд приложение интерпретатора языка.

В конце цикла вызывается метод error () этой оболочки для проверки того, что был ли цикл завершен аварийно. В таком случае вызывается функция die с сообщением об ошибке, содержащим код ошибки.

Объекты IO::Getline могут также применяться в блокирующем режиме. Для этого достаточно просто вызвать метод blocking (), объекта. Этот метод автомати­чески проходит вниз по иерархии, вплоть до основополагающего дескриптора файла

$stdin->blocking(1)     #          Снова перейти к блокирующему поведению

Этот модуль будет применяться в реальных программах в разделе далее.

Модуль IO::Getline

Модуль IO::Getline иллюстрирует общий метод буферизации частичного чтения из неблокирующего дескриптора файла.

Проведем анализ программы.

Строки 1-9. Настройка модуля. Загружаются модули IO::Handle и Carp, и из модуля Errno берется константа с кодом ошибки ewouldblock. Другая константа устанавливает размер фрагментов, с которыми будут выполняться операции чтения с помощью функции sysread () из основополагающего дескриптора файла. Модуль Carp предоставляет доступ к сообщениям об ошибках, которые указывают на местонахождение ошибок с точки зрения вызывающего оператора, и поэтому они более предпочтительны для использования внутри модулей.



2014-08-07 13:48:59

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


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


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


РЕКОМЕНДУЕМ

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