Unix Socket - Функции IP-адреса
Unix предоставляет различные вызовы функций, которые помогут вам управлять IP-адресами. Эти функции преобразуют Интернет-адреса между строками ASCII (которые люди предпочитают использовать) и сетевыми байтовыми упорядоченными двоичными значениями (значениями, которые хранятся в структурах адресов сокетов).
Следующие три вызова функций используются для адресации IPv4:
- int inet_aton (const char * strptr, struct in_addr * addrptr)
- in_addr_t inet_addr (const char * strptr)
- char * inet_ntoa (struct in_addr inaddr)
int inet_aton (const char * strptr, struct in_addr * addrptr)
Этот вызов функции преобразует указанную строку в стандартной точечной нотации Интернета в сетевой адрес и сохраняет адрес в предоставленной структуре. Преобразованный адрес будет в сетевом порядке байтов (байты отсортированы слева направо). Он возвращает 1, если строка действительна, и 0 в случае ошибки.
Ниже приведен пример использования -
#include <arpa/inet.h>
(...)
int retval;
struct in_addr addrptr
memset(&addrptr, '\0', sizeof(addrptr));
retval = inet_aton("68.178.157.132", &addrptr);
(...)
in_addr_t inet_addr (const char * strptr)
Этот вызов функции преобразует указанную строку в стандартной точечной нотации Интернета в целочисленное значение, подходящее для использования в качестве адреса Интернета. Преобразованный адрес будет в сетевом порядке байтов (байты отсортированы слева направо). Он возвращает 32-битный двоичный сетевой IPv4-адрес, упорядоченный по байтам, и INADDR_NONE в случае ошибки.
Ниже приведен пример использования -
#include <arpa/inet.h>
(...)
struct sockaddr_in dest;
memset(&dest, '\0', sizeof(dest));
dest.sin_addr.s_addr = inet_addr("68.178.157.132");
(...)
char * inet_ntoa (struct in_addr inaddr)
Этот вызов функции преобразует указанный адрес хоста в Интернете в строку в стандартной точечной нотации Интернета.
Ниже приведен пример использования -
#include <arpa/inet.h>
(...)
char *ip;
ip = inet_ntoa(dest.sin_addr);
printf("IP Address is: %s\n",ip);
(...)