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

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

Реклама

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

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

Ситуация, в которой  операция чтения “была бы заблокирована”, рассматривается как возврат методу истинного значения, который отличается от обычной операции чтения информации, размещенной на сайте ,  только тем что было считано 0 байтов. Проще всего в этом случае не выполнять никаких действий и перейти к ожиданию следующих операций ввода-вывода с помощью метода IO::SessionSet->wait().

Аналогичным образом не проверяется код результата выполнения метода write (), поскольку выполнение заблокированных попыток записи обеспечивает в конечном итоге объект SessionData путем постановки данных в очередь во внутреннем буфере и записи их байт за байтом каждый раз, когда сокет может их принять.

При использовании метода IO::SessionData->read () таким способом, маловероятно, что он когда-либо вернет значение 0Е0. Это связано с тем, что в методе IO::SessionSet->wait () применяется функция select () для проверки того, что в любом возвращаемом им объекте SessionData будет содержаться, по меньшей мере, один байт данных, который может быть считан. Исключение из этого правила возникает, если объект SessionData был только что создан в результате приема входящего соединения. В этом случае вполне может сложиться ситуация, что будут отсутствовать данные, которые можно было бы немедленно считать из этого объекта. Именно поэтому при работе с новым сеансом попытка вызвать метод getline () не предпринима­ется.

Если бы был предусмотрен неоднократный вызов метода read () без промежуточ­ных вызовов метода IO::SessionSet->wait (), то вполне могла возникнуть ситуа­ция, при которой операция чтения “была бы заблокирована”. Поэтому рекомендуется проверять, возвращено ли методом read() или getline () положительное число байтов, прежде чем приступать к работе с возвращенными данными.



2014-08-25 16:59:17

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


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


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


РЕКОМЕНДУЕМ

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