Gniazdo Unix - Funkcje adresu IP

Unix udostępnia różne wywołania funkcji, które pomagają w manipulowaniu adresami IP. Funkcje te konwertują adresy internetowe między łańcuchami ASCII (preferowanymi przez ludzi) a wartościami binarnymi uporządkowanymi według bajtów sieci (wartościami przechowywanymi w strukturach adresów gniazda).

Następujące trzy wywołania funkcji są używane do adresowania 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)

To wywołanie funkcji konwertuje określony ciąg w standardowej notacji kropkowej w Internecie na adres sieciowy i przechowuje adres w podanej strukturze. Przekonwertowany adres będzie w sieciowej kolejności bajtów (bajty uporządkowane od lewej do prawej). Zwraca 1, jeśli ciąg był prawidłowy i 0 w przypadku błędu.

Poniżej znajduje się przykład użycia -

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

To wywołanie funkcji konwertuje określony ciąg w standardowej notacji z kropkami w Internecie na wartość całkowitą, która może być używana jako adres internetowy. Przekonwertowany adres będzie w sieciowej kolejności bajtów (bajty uporządkowane od lewej do prawej). Zwraca 32-bitowy binarny adres sieciowy uporządkowany w bajtach IPv4 i INADDR_NONE w przypadku błędu.

Poniżej znajduje się przykład użycia -

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

To wywołanie funkcji konwertuje określony adres hosta internetowego na ciąg znaków w standardowej notacji kropkowej.

Poniżej znajduje się przykład użycia -

#include <arpa/inet.h>

(...)

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