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

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

Реклама

Perl для IP-Телефонии (35 – Мультиплексные приложения, часть 10)

предыдущая часть ««»» следующая часть
http://фотоцентр-спб.рф/

Методу select () не известно об этих буферах; в результате он может указать, что нет больше данных для чтения из дескриптора файла, а в действительности данные будут оставаться в другом буфере. Это может привести к нарушению работы и путанице.

В мультиплексных программах следует избегать использования оператора {}, функций print ( ) и read (), а также встроенной функции getline () и метода IO::Handle->getline (). Вместо этого нужно применять исключительно только вызовы sysread () и syswrite ( ) низкого уровня. В результате выполнение построчного ввода-вывода усложняется. Однако далее будут описаны некоторые модули, позволяющие преодолеть это ограничение.

Корректировка нижних отметок

В некоторых версиях UNIX можно управлять готовностью сокета для чтения или записи, изменяя нижние отметки приемного и/или передающего буферов сокета. Нижняя отметка приемного буфера указывает, какой объем данных должен в нем накопиться,  прежде чем метод select ( ) укажет, что он готов для чтения, и в этом случае функция sysread() может быть вызвана без блокировки. Нижняя отметка по умолчанию равна одному байту, но это значение можно изменить, вызвав метод setsockopt() с опцией SO_RCVLOWAT. Иногда может потребоваться изменить это значение, если от второго участника соединения ожидается получение фрагментов данных фиксированного размера и нет смысла заниматься обработкой неполных сообщений.

При записи в сокет нижняя отметка указывает, какое число байтов данных может быть записано в сокет с помощью функции syswrite (); без блокировки. По умолча­нию нижняя отметка равна одному байту, но это значение можно изменить, вызвав метод setsockopt () с опцией SO_SNDL0WАТ.

В различных операционных системах средства изменения нижних отметок буфе­ров сокета реализованы поразному. Они могут применяться в большинстве версий UNIX, но отсутствуют в системах Windows и Macintosh. Кроме того, ядро Linux (вплоть до версии 2.4) позволяет устанавливать нижнюю отметку приемного, но не передающего буфера.



2014-07-16 13:31:53

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


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


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


РЕКОМЕНДУЕМ

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