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 getaddrinfo() liefert Adress- und Portinformationen zum Rechnernamen und zum Service-Namen, welche beim Aufruf angegeben wurden.
Die Funktion getnameinfo() liefert Rechnernamen und Service-Namen zur IP-Adresse und zur Portnummer, welche beim Aufruf angegeben wurden.
Die Funktion getipnodebyname() wandelt einen Rechnernamen in eine IPv4-Adresse oder in eine IPv6-Adresse um.
Die Funktion getipnodebyaddr() wandelt eine IPv4- oder IPv6-Adresse in einen Rechnernamen um.
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.
Die Funktion gethostbyaddr() wandelt eine IPv4-Adresse in einen Rechnernamen um.
Die Funktionen gethostbyname() und gethostbyaddr() 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() zurückgelieferte hostent-Objekt enthält immer folgende Informationen:
Name des Rechners
Liste der alternativen Namen (Aliases) des Rechners
Adresstyp (Domäne)
mit dem Null-Zeiger abgeschlossene Liste von IPv4-Adressen
Die Adressliste wird benötigt, weil ein Rechner möglicherweise mehrere Adressen hat, die alle demselben Rechnernamen zugeordnet sind.
Die Funktion inet_ntoa() konvertiert eine IPv4-Rechneradresse in eine Zeichenkette gemäß der üblichen Internet-Punktschreibweise.