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

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

Реклама

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

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

В ином случае соединение было выполнено успешно. Сокет снова переводится в блокирующий режим и предпринимается попытка отправить соответствующий запрос get на Web-сервер. В случае ошибки записи выдается сообщение об ошибке и возвращается значение undef. В ином случае можно сделать вывод, что запрос был отправлен успешно, и установить значе­ние переменной состояния, равное “reading header”.

Строки 69-74. Метод read() вызывается после перехода сокета объекта HTTPFetch в состояние готовности для чтения, что может указывать на то, что сервер присту­пил к отправке ответа HTTP. Рассматривается содержимое переменной состояния status. Если эта переменная имеет значение “reading header”, вызывается метод read_header (). В ином случае вызывается метод read_body().

Строки 75-93. Метод read_header (). Этот метод немного сложнее, поскольку необходимо выполнять чтение до тех пор, пока не появятся две пары символов crlf, которые обозначают конец заголовка. Для этого нельзя использовать оператор <>, поскольку он может заблокироваться и, к тому же, безусловно, будет конфликтовать с вызовами функции select () в основ­ной программе. Для этого сокета вызывается функция sysread (), которая запрашивает фрагмент данных дли­ной 1024 байта. Может быть получен весь фрагмент в одной операции или выполнено частичное чтение, после которого снова придется вызывать операцию чтения после перехода сокета в со­стояние готовности. В любом случае все полученные данные добавляются к концу внутреннего буфера, обозначенного переменной экземпляра header, и используется функция rindex () для проверки того, не была ли получена пара символов crlf. Функция rindex () возвращает индекс искомой строки в более длинной строке, начиная с крайней правой позиции.



2014-10-08 23:37:37

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


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


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


РЕКОМЕНДУЕМ

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