Unix-Socket - IP-Adressfunktionen
Unix bietet verschiedene Funktionsaufrufe, mit denen Sie IP-Adressen bearbeiten können. Diese Funktionen konvertieren Internetadressen zwischen ASCII-Zeichenfolgen (was Menschen bevorzugen) und Binärwerten in Netzwerkbyte-Reihenfolge (Werte, die in Socket-Adressstrukturen gespeichert sind).
Die folgenden drei Funktionsaufrufe werden für die IPv4-Adressierung verwendet:
- 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)
Dieser Funktionsaufruf konvertiert die angegebene Zeichenfolge in der Internet-Standardpunktnotation in eine Netzwerkadresse und speichert die Adresse in der bereitgestellten Struktur. Die konvertierte Adresse befindet sich in der Reihenfolge der Netzwerkbytes (Bytes von links nach rechts). Es gibt 1 zurück, wenn die Zeichenfolge gültig war, und 0 bei einem Fehler.
Es folgt das Verwendungsbeispiel -
#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)
Dieser Funktionsaufruf konvertiert die angegebene Zeichenfolge in der Internet-Standardpunktnotation in einen ganzzahligen Wert, der zur Verwendung als Internetadresse geeignet ist. Die konvertierte Adresse befindet sich in der Reihenfolge der Netzwerkbytes (Bytes von links nach rechts). Es gibt eine 32-Bit-IPv4-Adresse mit binärem Netzwerkbyte und INADDR_NONE bei einem Fehler zurück.
Es folgt das Verwendungsbeispiel -
#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)
Dieser Funktionsaufruf konvertiert die angegebene Internet-Host-Adresse in eine Zeichenfolge in der Internet-Standard-Punktnotation.
Es folgt das Verwendungsbeispiel -
#include <arpa/inet.h>
(...)
char *ip;
ip = inet_ntoa(dest.sin_addr);
printf("IP Address is: %s\n",ip);
(...)