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);
   
(...)