Für die Umwandlung von Rechnernamen in Netzadressen und umgekehrt gibt es in den Adressfamilien AF_INET und AF_INET6 spezielle Socket-Funktionen.
Socket-Funktionen zur Adressumwandlung in den Adressfamilien AF_INET und AF_INET6
Die Funktion getipnodebyname() wandelt einen Rechnernamen in eine IPv4-Adresse oder in eine IPv6-Adresse um. Beim Aufruf von getipnodebyname() wird ein Rechnername übergeben.
Die Funktion getipnodebyaddr() wandelt eine IPv4- bzw. IPv6-Adresse in einen Rechnernamen um. Beim Aufruf von getipnodebyaddr() wird eine IPv4- bzw. IPv6-Adresse übergeben.
Die Funktion inet_ntop() konvertiert eine Internet-Rechneradresse in eine Zeichenkette. Diese Zeichenkette wird wie folgt zurückgeliefert:
bei AF_INET6 in der sedezimalen Doppelpunkt-Notation
bei AF_INET in der dezimalen Punkt-Notation
Die Funktion inet_pton() konvertiert eine abdruckbar dargestellte Internet-Rechneradresse
von einer Zeichenkette in der dezimalen Punkt-Notation in eine binäre IPv4-Adresse (AF_INET).
von einer Zeichenkette in der sedezimalen Doppelpunkt-Notation in eine binäre IPv6-Adresse (AF_INET6).
Socket-Funktionen zur Adressumwandlung, die nur in AF_INET unterstützt werden
Die Funktion gethostbyname() wandelt einen Rechnernamen in eine IPv4-Adresse um. Beim Aufruf von gethostbyname() wird ein Rechnername übergeben.
Die Funktion gethostbyaddr() wandelt eine IPv4-Adresse in einen Rechnernamen um. Beim Aufruf von gethostbyaddr() wird eine IPv4-Adresse übergeben.
gethostbyname() und gethostbyaddr(), sowie auch getipnodebyname() und getipnodebyaddr() liefern als Ergebnis einen Zeiger auf ein Objekt vom Datentyp struct hostent.
Die Struktur hostent ist in <netdb.h> wie folgt deklariert:
struct hostent { char *h_name; /* offizieller Rechnername */ char **h_aliases; /* Alias-Liste */ int h_addrtype; /* Adresstyp */ int h_length; /* Länge der Adresse (in Bytes) */ char **h_addr_list; /* Liste von Adressen für den Rechner, */ /* terminiert durch den Null-Zeiger */ }; #define h_addr h_addr_list[0] /* erste Adresse, Netz-Byte-Reihenfolge */
Das von gethostbyname() und gethostbyaddr(), sowie von getipnodebyname() und getipnodebyaddr() zurückgelieferte hostent-Objekt enthält – wenn von der Datenbasis zur Verfügung gestellt – folgende Informationen:
offizieller Name des Rechners
Liste der alternativen Namen (Aliases) des Rechners
Adresstyp (Domäne)
mit dem Null-Zeiger abgeschlossene Liste von Adressen variabler Länge
Die Adressliste wird benötigt, weil ein Rechner möglicherweise viele Adressen hat, die alle demselben Rechnernamen zugeordnet sind. Die Definition von h_addr gewährleistet Rückwärts-Kompatibilität und ist definiert als die erste Adresse in der Adressliste der Struktur hostent.
Die Funktion inet_ntoa() konvertiert eine IPv4-Rechneradresse in eine Zeichenkette gemäß der üblichen Internet-Punktschreibweise.