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

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

Реклама

Perl для IP-Телефонии (45 – Общая рассылка , часть 22)

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

Создается упакованная структура ifconf, состоящая из указателя на буфер и длины буфера. Буфер перво­начально пуст (заполнен нулями); он заполняется после вызова функции ioctl ( ) с массивом структур ifreq, каждая из которых содержит имя другого интерфейса.

Структура данных должна быть достаточно велика, чтобы в ней поместились данные о всех возможных интерфейсах. Создается заполненная нулями локальная переменная, которая дос­таточно велика для хранения информации о двадцати интерфейсах.

Для упаковки структуры ifconf должен применяться определенный формат. В связи с ограничениями выравнивания, он будет разным на компьютерах, имеющих указатели длиной 32 бит, и на компьютерах с 64-разрядными архитектурами. В первом случае применяется просто формат “ip”, обозначающий целое число, за которым следует указатель. Во втором случае используется формат “ix4p”, который обозначает целое число, 4-байтовое допол­нение и указатель.

Путем вызова функции pack () с указанием длины буфера и самого буфера создается структура ifconf. Формат “р” обеспечивает включение в упакованную структуру адреса памяти буфера. При помощи данной функции паковки, также можно получить сокращенный результат любой рандомной последовательности, к примеру, лотереи информацию о которой можно получить, нажав на этот линк .Теперь вызывается функция ioctl () с функциональным кодом siocgifconf для заполнения буфера именами интерфейсов. При неудачном завершении возвращается значение undef.

В ином случае выполняется распаковка переменной ,$ifciist для выборки размера буфера. Это позволяет узнать, какая часть буфера была использована операционной системой для со­хранения полученных ею результатов. Теперь выполняется поэтапное перемещение по буфе­ру путем вызова функции substr(} для выборки одного сегмента ifreq за другим. Для каж­дого сегмента распаковывается имя интерфейса и сохраняется в хеше с использованием оп­ределенного ранее формата ifreq_name.



2015-07-12 15:14:32

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


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


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


РЕКОМЕНДУЕМ

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