Soquete Unix - Funções de endereço IP
O Unix fornece várias chamadas de função para ajudá-lo a manipular endereços IP. Essas funções convertem endereços de Internet entre strings ASCII (o que os humanos preferem usar) e valores binários ordenados por byte de rede (valores que são armazenados em estruturas de endereço de soquete).
As três chamadas de função a seguir são usadas para endereçamento 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)
Essa chamada de função converte a string especificada na notação de ponto padrão da Internet em um endereço de rede e armazena o endereço na estrutura fornecida. O endereço convertido estará em Network Byte Order (bytes ordenados da esquerda para a direita). Retorna 1 se a string era válida e 0 em caso de erro.
A seguir está o exemplo de uso -
#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)
Essa chamada de função converte a string especificada na notação de ponto padrão da Internet em um valor inteiro adequado para uso como um endereço da Internet. O endereço convertido estará em Network Byte Order (bytes ordenados da esquerda para a direita). Ele retorna um endereço IPv4 ordenado por byte de rede binário de 32 bits e INADDR_NONE em caso de erro.
A seguir está o exemplo de uso -
#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)
Essa chamada de função converte o endereço de host da Internet especificado em uma string na notação de ponto padrão da Internet.
A seguir está o exemplo de uso -
#include <arpa/inet.h>
(...)
char *ip;
ip = inet_ntoa(dest.sin_addr);
printf("IP Address is: %s\n",ip);
(...)