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

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

Реклама

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

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

Например, вызов функции ioctl () с кодом SIOCGIFCONF возвращает список всех активных интерфейсов с кодом SIOCGIFBRDADDR — широковещательный адрес конкретного интерфейса. Информация о выбранном интерфейсе передается между программой и операционной системой в упакованной двоичной структуре, указанной в качестве третьего параметра функции ioctl(). В функциональных кодах, связанных с интерфейсом, используются два типа данных: структура ifreq служит для передачи в прямом и обратном направлении информации о конкретном интерфейсе, а структура ifconf применяется при выборке списка всех активных интерфейсов.

Рассмотрим это на небольшом примере. Допустим, уже известно о наличии интерфейса Ethernet с именем tuO (этот интерфейс соответствует интерфейсу Ethernet “Tulip” на компьютере Digital Tru64 UNIX). Для выборки его широковещательного адреса можно использовать следующий фрагмент кода.

my $ifreq = pack(fZ16 xl6f, ftuOf);

ioctl($sock,SIOCGIFBRDADDR,$ifreq);

my ($name,$family,$addr) = unpack('Z16 s x2 a4',$ifreq);

print "broadcast - ", inet__ntoa ($addr), "n";

Имя интерфейсной платы упаковывается в структуру ifreq и передается функции ioctl () с использованием функционального кода SIOCGIFBRDADDR. Функции ioctl () возвращает в переменной $ifreq результат, который распаковывается и отображается. Для обеспечения правильной работы этого фрагмента кода необходимо знать значение константы SIOCGIFBRDADDR и “магические” форматы, используемые для упаковки и распаковки структуры ifreq. Источники этой информации будут описаны в следующем разделе.

Таблица: Функциональные коды функции ioctl (), предназначенные для

выборки информации об интерфейсе

Код

Параметр

Описание

SIOCGIFCONF

ifconf

Выборка списка интерфейсов

SIOCGIFADDR

if req

Получение IP-адреса интерфейса

SIOCGIFBRDADDR

if req

Получение широковещательного адреса интерфейса

SIOCGIFNETMASK

ifreq

Получение маски сети интерфейса

SIOCGIRDSTADDR

if req

Получение адреса назначения двухточечного интерфейса

SIOCGIFHWADDR

ifreq

Получение аппаратного адреса интерфейса

SIOCGIFFLAGS

ifreq

Получение атрибутов интерфейса

 

В вызове функции ioctl (), связанном с определением характеристик интерфейса можно передать любой открытый сокет, даже тот, который был создан для другой цели.

2015-06-09 21:16:58

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


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


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


РЕКОМЕНДУЕМ

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