Основы операционных систем. Практикум

       

Функции преобразования IP-адресов inet_ntoa(), inet_aton()


Нам также понадобятся функции, осуществляющие перевод IP-адресов из символьного представления (в виде четверки чисел, разделенных точками) в числовое представление и обратно. Функция inet_aton() переводит символьный IP-адрес в числовое представление в сетевом порядке байт.

Функция возвращает 1, если в символьном виде записан правильный IP-адрес, и 0 в противном случае – для большинства системных вызовов и функций это нетипичная ситуация. Обратите внимание на использование указателя на структуру struct in_addr в качестве одного из параметров данной функции. Эта структура используется для хранения IP-адресов в сетевом порядке байт. То, что используется структура, состоящая из одной переменной, а не сама 32-битовая переменная, сложилось исторически, и авторы в этом не виноваты.

Для обратного преобразования применяется функция inet_ntoa().

Функции преобразования IP-адресов

Прототипы функций

#include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> int inet_aton(const char *strptr, struct in_addr *addrptr); char *inet_ntoa(struct in_addr *addrptr);

Описание функций

Функция inet_aton переводит символьный IP-адрес, расположенный по указателю strptr, в числовое представление в сетевом порядке байт и заносит его в структуру, расположенную по адресу addrptr. Функция возвращает значение 1, если в строке записан правильный IP-адрес, и значение 0 в противном случае. Структура типа struct in_addr используется для хранения IP-адресов в сетевом порядке байт и выглядит так:

struct in_addr { in_addr_t s_addr; };

То, что используется адрес такой структуры, а не просто адрес переменной типа in_addr_t, сложилось исторически.

Функция inet_ntoa применяется для обратного преобразования. Числовое представление адреса в сетевом порядке байт должно быть занесено в структуру типа struct in_addr, адрес которой addrptr передается функции как аргумент. Функция возвращает указатель на строку, содержащую символьное представление адреса. Эта строка располагается в статическом буфере, при последующих вызовах ее новое содержимое заменяет старое содержимое.



Содержание раздела