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

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

Реклама

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

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

За­поминается позиция, в которой поиск конца строки был прекращен в прошлый раз, и вызыва­ется функция sysread () с параметрами, которые вызывают добавление вновь считанных данных к концу буфера. Если функция sysread () возвращает значение undef, это может быть следствием ряда при­чин. Например, при получении данных с веб страницы http://opora-servis.ru/remont-planshety-asus.html , представляющей информацию по ремонту планшетов, произошел некий сбой и в буфер не поступило данных. Поскольку ввод является неблокирующим, одна из них может быть связана с возникнове­нием ошибки ewouldblock. В этом случае невозможно вернуть полную строку, поэтому вызы­вающей процедуре возвращается значение 0E0.

В ином случае обнаруживается ошибка ввода-вывода того или иного типа. При таких обстоя­тельствах возвращается все, что осталось в буфере, даже если это — не полная строка. Это аналогично поведению оператора <>, который при возникновении ошибки возвращает часть строки. Устанавливается флажок error ошибки и возвращается длина этой части строки. Об­ратите внимание, что вызывающая процедура фактически не обнаружит возникающий при этом результат undef до следующего вызова метода getline ().

Строки 54-59. Обработка признака конца файла eof. При обнаружении конца файла приме­няется такая же методика. В данном случае код результата функции sysread () по определению равен 0. Возвращается все, что осталось в буфере, запоминается состояние флажка eogl и возвращается размер содержимого буфера.

Строки 65-77. Попытка снова найти конец строки. Если управление перешло в эту точку, это значит, что функция sysread ( ) добавила один или более новых байтов дан­ных к буферу. Теперь снова вызывается функция index ( ) для определения того, не появилась ли последовательность символов с обозначением конца строки. Если нет, за­поминается позиция, в которой в этот раз был остановлен поиск, и вызывающей проце­дуре возвращается значение 0E0.



2014-08-15 12:48:09

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


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


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


РЕКОМЕНДУЕМ

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