Книга: Основы программирования в Linux
Адреса сокетов
Адреса сокетов
Каждый домен сокетов требует своего формата адресов. В домене AF_UNIX
адрес описывается структурой sockaddr_un
, объявленной в заголовочном файле sys/un.h:
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[]; /* Путь к файлу */
};
Для того чтобы адреса разных типов могли передаваться в системные вызовы для обработки сокетов, все адресные форматы описываются похожей структурой, которая начинается с поля (в данном случае sun_family
), задающего тип адреса (домен сокета). В домене AF_UNIX
адрес задается именем файла в поле структуры sun_path
.
В современных системах Linux тип sa_family_t
, описанный в стандарте X/Open как объявляемый в заголовочном файле sys/un.h, интерпретируется как тип short
. Кроме того, размер pathname
, задаваемого в поле sun_path
, ограничен (в Linux указывается 108 символов; в других системах может применяться именованная константа, например, UNIX_MAX_PATH
). Поскольку размер адресной структуры может меняться, многие системные вызовы сокетов требуют или предоставляют на выходе длину, которая будет использоваться для копирования конкретной адресной структуры.
В домене AF_INET
адрес задается с помощью структуры с именем sockaddr_in
, определенной в файле netinet/in.h, которая содержит как минимум следующие элементы:
struct sockaddr_in {
short int sin_family; /* AF_INET */
unsigned short int sin_port; /* Номер порта */
struct in_addr sin_addr; /* Интернет-адрес */
};
Структура IP-адреса типа in_addr определена следующим образом:
struct in_addr {
unsigned long int s_addr;
};
Четыре байта IP-адреса образуют одно 32-разрядное значение. Сокет домена AF_INET
полностью описывается IP-адресом и номером порта. С точки зрения приложения все сокеты действуют как файловые дескрипторы, и их адреса задаются уникальными целочисленными значениями.
- Универсальная структура адреса сокета
- Программный интерфейс сокетов
- Пример использования сокетов
- 17.4.1. Адреса домена Unix
- 5.5.1. Концепции сокетов
- 3.2. Структуры адреса сокетов
- Сравнение структур адреса сокетов
- Глава 2 Обнаружение адреса
- 5.21 IP-адреса, интерфейсы и множественное пребывание
- 3.6.1. Адресация в Linux
- 4.12.2. Переадресация
- Логика «от адресата»