ВУЗ:
Составители:
42
выполнена успешно и –1, если произошла ошибка. В случае ошибки переменная errno
может принимать следующие значения:
EBADF аргумент SOCKET не является правильным дескриптором
файла;
ENOTSOCK дескриптор SOCKET не является гнездом;
ENOBUFS размера внутренних буферов недостаточно для выполнения
операции.
Имена интерфейсов
Каждый сетевой интерфейс имеет собственное имя. Обычно оно состоит из
нескольких букв, определяющих тип интерфейса и цифры, определяющей его номер,
если таких интерфейсов несколько. К таким именам интерфейсов относятся, например,
lo (интерфейс обратной связи), eth0 (первый интерфейс Ethernet). Однако использование
символьных имен интерфейсов в программах довольно неудобно, поэтому интерфейсы
определяются выбранных случайно целым положительным числом.
Следующие функции, константы и типы данных определяются в заголовочном
файле <net/if.h>.
const size_t IFNAMSIZ
Эта константа определяет максимальный размер буфера, необходимого для
хранения имени интерфейса, включающего завершающий нулевой символ.
unsigned int if_nametoindex (const char *ifname)
Эта функция выдает индекс интерфейса, соответствующий символьному
имени.
char * if_indextoname (unsigned int ifindex, char *ifname)
Эта функции соотносит индекс интерфейса с его символьным именем.
Возвращаемое имя помещается в буфер, на который указывает аргумент ifname,
который должен быть длиной по крайней мере IFNAMSIZE байтов. Если задаваемый
индекс интерфейса неправилен, функция возвращает нулевое значение.
struct if_nameindex {
unsigned int if_index;
char *if_name;
};
Этот тип данных используется для хранения данных об интерфейсе. Здесь
if_index – индекс интерфейса, if_name – символьное имя интерфейса, заканчивающееся
нулевым символом.
struct if_nameindex * if_nameindex (void)
Эта функция возвращает массив структур if_nameindex. Каждый элемент
массива соответствует одному присутствующему в системе интерфейсу. Конец массива
указывается элементом, в котором номер интерфейса равен нулю, а указатель на
символьное имя является нулевым указателем. Если произошла ошибка, функция
возвращает нулевой указатель.
void if_freenameindex (struct if_nameindex *ptr)
Эта функция освобождает память, занимаемую структурой, создаваемой
вызовом if_nameindex.
Локальное пространство имен
Локальное пространство имен в некоторым источникам может называться
также “доменными гнездами”.
В локальном пространстве имен адреса гнезд представляются именами файлов.
Возможно назначить любое имя файла адресом гнезда, однако необходимо иметь права
на запись в том директории, где создается такой файл. В случае подключения в гнезду,
выполнена успешно и –1, если произошла ошибка. В случае ошибки переменная errno может принимать следующие значения: EBADF аргумент SOCKET не является правильным дескриптором файла; ENOTSOCK дескриптор SOCKET не является гнездом; ENOBUFS размера внутренних буферов недостаточно для выполнения операции. Имена интерфейсов Каждый сетевой интерфейс имеет собственное имя. Обычно оно состоит из нескольких букв, определяющих тип интерфейса и цифры, определяющей его номер, если таких интерфейсов несколько. К таким именам интерфейсов относятся, например, lo (интерфейс обратной связи), eth0 (первый интерфейс Ethernet). Однако использование символьных имен интерфейсов в программах довольно неудобно, поэтому интерфейсы определяются выбранных случайно целым положительным числом. Следующие функции, константы и типы данных определяются в заголовочном файле. const size_t IFNAMSIZ Эта константа определяет максимальный размер буфера, необходимого для хранения имени интерфейса, включающего завершающий нулевой символ. unsigned int if_nametoindex (const char *ifname) Эта функция выдает индекс интерфейса, соответствующий символьному имени. char * if_indextoname (unsigned int ifindex, char *ifname) Эта функции соотносит индекс интерфейса с его символьным именем. Возвращаемое имя помещается в буфер, на который указывает аргумент ifname, который должен быть длиной по крайней мере IFNAMSIZE байтов. Если задаваемый индекс интерфейса неправилен, функция возвращает нулевое значение. struct if_nameindex { unsigned int if_index; char *if_name; }; Этот тип данных используется для хранения данных об интерфейсе. Здесь if_index – индекс интерфейса, if_name – символьное имя интерфейса, заканчивающееся нулевым символом. struct if_nameindex * if_nameindex (void) Эта функция возвращает массив структур if_nameindex. Каждый элемент массива соответствует одному присутствующему в системе интерфейсу. Конец массива указывается элементом, в котором номер интерфейса равен нулю, а указатель на символьное имя является нулевым указателем. Если произошла ошибка, функция возвращает нулевой указатель. void if_freenameindex (struct if_nameindex *ptr) Эта функция освобождает память, занимаемую структурой, создаваемой вызовом if_nameindex. Локальное пространство имен Локальное пространство имен в некоторым источникам может называться также “доменными гнездами”. В локальном пространстве имен адреса гнезд представляются именами файлов. Возможно назначить любое имя файла адресом гнезда, однако необходимо иметь права на запись в том директории, где создается такой файл. В случае подключения в гнезду, 42
Страницы
- « первая
- ‹ предыдущая
- …
- 40
- 41
- 42
- 43
- 44
- …
- следующая ›
- последняя »