Socket Unix - Funciones de dirección IP

Unix proporciona varias llamadas a funciones para ayudarlo a manipular direcciones IP. Estas funciones convierten direcciones de Internet entre cadenas ASCII (lo que los humanos prefieren usar) y valores binarios ordenados por bytes de red (valores que se almacenan en estructuras de direcciones de socket).

Las siguientes tres llamadas de función se utilizan para el direccionamiento IPv4:

  • int inet_aton (const char * strptr, struct in_addr * addrptr)
  • in_addr_t inet_addr (const char * strptr)
  • char * inet_ntoa (estructura in_addr inaddr)

int inet_aton (const char * strptr, struct in_addr * addrptr)

Esta llamada de función convierte la cadena especificada en la notación de puntos estándar de Internet en una dirección de red y almacena la dirección en la estructura proporcionada. La dirección convertida estará en orden de bytes de red (bytes ordenados de izquierda a derecha). Devuelve 1 si la cadena era válida y 0 en caso de error.

A continuación se muestra el ejemplo 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)

Esta llamada de función convierte la cadena especificada en la notación de puntos estándar de Internet en un valor entero adecuado para su uso como dirección de Internet. La dirección convertida estará en orden de bytes de red (bytes ordenados de izquierda a derecha). Devuelve una dirección IPv4 ordenada por bytes de red binaria de 32 bits e INADDR_NONE en caso de error.

A continuación se muestra el ejemplo 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 (estructura in_addr inaddr)

Esta llamada de función convierte la dirección de host de Internet especificada en una cadena en la notación de puntos estándar de Internet.

A continuación se muestra el ejemplo de uso:

#include <arpa/inet.h>

(...)

   char *ip;
   
   ip = inet_ntoa(dest.sin_addr);
   
   printf("IP Address is: %s\n",ip);
   
(...)