Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Rechnernamen in Netzadressen umwandeln und umgekehrt

&pagelevel(3)&pagelevel

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.