Socket Unix - Funzioni dell'indirizzo IP

Unix fornisce varie chiamate di funzione per aiutarti a manipolare gli indirizzi IP. Queste funzioni convertono gli indirizzi Internet tra stringhe ASCII (ciò che gli esseri umani preferiscono usare) e valori binari ordinati per byte di rete (valori memorizzati nelle strutture degli indirizzi socket).

Le seguenti tre chiamate di funzione vengono utilizzate per l'indirizzamento 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)

Questa chiamata di funzione converte la stringa specificata nella notazione punto standard Internet in un indirizzo di rete e memorizza l'indirizzo nella struttura fornita. L'indirizzo convertito sarà in Network Byte Order (byte ordinati da sinistra a destra). Restituisce 1 se la stringa era valida e 0 in caso di errore.

Di seguito è riportato l'esempio di utilizzo:

#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)

Questa chiamata di funzione converte la stringa specificata nella notazione punto standard Internet in un valore intero adatto per l'uso come indirizzo Internet. L'indirizzo convertito sarà in Network Byte Order (byte ordinati da sinistra a destra). Restituisce un byte di rete binario a 32 bit ordinato indirizzo IPv4 e INADDR_NONE in caso di errore.

Di seguito è riportato l'esempio di utilizzo:

#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)

Questa chiamata di funzione converte l'indirizzo host Internet specificato in una stringa nella notazione punto standard Internet.

Di seguito è riportato l'esempio di utilizzo:

#include <arpa/inet.h>

(...)

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