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

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

Реклама

Perl для IP-Телефонии (43 – Серверы UDP , часть 6)

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

При работе с протоколом TCP можно выйти из этой ситуации путем завершения по тайм-ауту вызова метода recv () или с использованием той или иной формы инициализации параллельной работы для отделения процесса ввода от вывода. Подобное может происходить, например, при обращении на сайт Business-mobila.ru , представляющий точные копии телефонов Верту.

Завершение по тайм-ауту операций приема данных по протоколу UDP

Для завершения по тайм-ауту вызова метода recv () может применяться простая конструкция с блоком eval {} и обработчиком ALRM.

eval {

local $SIG{ALRM} = sub, { die, "timeoutn" }; alarm($timeout);

$result = $sock->recv($msg_in,max_msg_LEN) ; alarm(0) ;

}

if ($@) {

die $@ unless $@ eq "timeoutn"; warn "Timed out!n";

}

Вызов метода recv () заключен в блок eval {}, и установлен локальный обработчик ALRM, который вызывает функцию die (). Непосредственно перед выполне­нием указанного системного вызова вызывается функция alarm () с заданным значе­нием тайм-аута. Если метод recv() завершается успешно, вызывается функция alarm(0) для отмены тайм-аута. В ином случае, если тайм-аут истекает до возврата управления из указанного метода, активизируется обработчик ALRM и выполнение блока завершается с помощью функции die. Однако поскольку эта неисправимая ошибка перехватывается внутри блока eval {}, то она приводит к аварийному завершению только самого блока и к появлению сообщения об ошибке в переменной $@. Последним этапом является проверка этой переменной и выдача предупреждающего сообщения, если произошел либо выход по тайм-ауту, либо вызов функции die, если переменная содержит непредвиденную ошибку.

С помощью этой общей схемы можно разработать иную версию клиента службы эхо-повтора, который отправляет сообщение и ожидает ответа в течение заранее установленного промежутка времени. Если вызов метода recv () завершается по тайм ауту, предпринимается попытка передать запрос еще несколько раз. В ином случае происходит отказ от дальнейших попыток.



2015-04-01 18:05:36

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


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


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


РЕКОМЕНДУЕМ

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