inet_pton(3)

НАЗВАНИЕ
inet_pton - создает структуру c сетевым адресом

СИНТАКСИС
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int inet_pton(int af, const char *src, void *dst);

ОПИСАНИЕ
Данная функция преобразует строку символов src в сетевой адрес (типа af), затем копирует полученную структуру с адресом в dst.

Возможности функции inet_pton(3) несколько шире, чем функции inet_addr(3), так как первая может поддерживать несколько типов адресов, поэтому использование inet_addr(3) будет считаться устаревшим и ненужным по сравнению с inet_pton(3). На текущий момент поддерживаются следующие типы адресов:

AF_INET
    src указывает на строку символов, содержащую сетевой адрес IPv4 в формате "ddd.ddd.ddd.ddd". Адрес преобразуется в struct in_addr и копируется в переменную dst, размер которой должен быть равен sizeof(struct in_addr) байтам.

AF_INET6
    src указывает на строку символов, содержащую адрес сети IPv6 в разрешенном для сети IPv6 формате адреса. Адрес преобразуется в struct in6_addr и копируется в переменную dst, размер которой должен быть sizeof(struct in6_addr) байтов.

Конечно, стандартные шестнадцатеричные и восьмеричные форматы AF_INET адресов не поддерживаются inet_pton.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
inet_pton возвращает отрицательное значение и меняет значение переменной errno на EAFNOSUPPORT, если af не содержит правильного типа адреса. Возвращается 0, если src не содержит строку символов, представляющую правильный сетевой адрес (для указанного типа адресов). Если сетевой адрес был успешно преобразован, то возвращается положительное значение.

СМ. ТАКЖЕ
inet_ntop(3)

НАЙДЕННЫЕ ОШИБКИ
AF_INET6 не распознает адреса IPv4. В таких случаях в src должен находиться отчетливо отображенный в IPv6 адрес IPv4.