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

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

Реклама

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

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

Это служит для модуля указанием, что ввод-вывод в любом из этих объектов больше не будет выполняться. Однако основополагающие дескрипторы файлов не закрываются до тех пор, пока при последующих вызовах метода wait () не будут переданы все данные, поставленные в очередь. Обратите внимание, что для записи в дескриптор файла $stdout применяется следующая общая схема:

$stdout->write ($data) ,if $bytes > 0;

Это связано с тем, что метод $connection->read () может вернуть значение 0Е0 для указания на ошибку ewouldblock. В этом случае буфер $data не будет содержать новых данных, поэтому не нужно пытаться их записывать. С этой ситуацией позволяет справиться операция числового сравнения. Подобные схемы очень полезны для реализации новых бизнес идей сетевой тематики с применением оптимальных режимов.

Строки 36-42. Копирование данных из стандартного ввода в сокет. Если готовый дескриптор файла, возвращенный методом wait (), представляет собой объект IO::SessionData типа $stdin, то предпринимается попытка считать из него некоторые данные и записать их в сокет. Однако если метод read() возвращает ложный результат, это значит, что дескриптор STDIN закрыт. В ответ на это вызывается метод shutdown () сокета для закрытия записывающей стороны соединения. Это приводит к тому, что удаленный сервер обнаруживает признак конца файла и закрывает свой конец соединения, поэтому при следующем проходе по циклу метод $connection->read () возвращает ложный результат. Такой подход аналогичен применяемому в предыдущих версиях этого клиента.

Эта версия клиента gab имеет длину 45 строк, тогда как мультипроцессная версия,  - 28 строк, а многопоточная - 27 строк. Может создаться впечатление, что эта версия не намного сложнее предыдущих, но нужно учитывать, что для ее поддержки применяется еще примерно 300 строк кода модулей IO::SessionData и IO::SessionSet!



2014-09-21 12:51:21

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


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


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


РЕКОМЕНДУЕМ

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