gethostbyname

Deklaration

#include <netdb.h>

struct hostent *gethostbyname(const char *name);

Beschreibung

Die Funktion gethostbyname() ermittelt eine Liste von IP-Adressen zu einem gegebenen Hostnamen. Dabei wird eine Systemkomponenten genannt Resolver eingesetzt, die z.B. auch mit DNS-Servern interagiert. Bei einem erfolgreichen Lookup wird ein Zeiger auf eine Struktur vom Typ hostent zurückgegeben:

struct hostent {
        char  *h_name;        /* official name of host */
        char **h_aliases;     /* alias list */
        int    h_addrtype;    /* host address type */
        int    h_length;      /* length of address */
        char **h_addr_list;   /* list of addresses */
};
#define h_addr h_addr_list[0] /* for backward compatibility */

Die Elemente haben dabei folgende Bedeutung:

h_name Der offizielle Name des Hosts. Dieser kann von dem Namen abweichen, nach dem gefragt wurde.
h_aliases Eine Liste weiterer Namen des Hosts, terminiert durch einen Nullzeiger.
h_addrtype Typ der Adressen, beim Aufruf von gethostbyname() ist dies AF_INET.
h_length Die Größe einer Adresse in Bytes, also 4 bei AF_INET.
h_addr_list Eine Liste der Adressen dieses Hosts, in binärer Form, also uint32_t bzw. in_addr.

Weiterhin gibt es das Symbol h_addr das ein Alias für das erste Element in h_addr_list[] ist.

UNIX: wenn der Aufruf fehlschlägt, dann steht der Fehlercode nicht in der globalen Variable errno, sondern in der globalen Variable h_errno. Zur Umwandlung in einen lesbaren Text existiert die Funktion hstrerror().

Windows: wenn der Aufruf fehlschlägt, dann kann ganz normal WSAGetLastError() benutzt werden.

Parameter

name Name des Hosts nach dem gesucht wird.

Rückgabewert

Zeiger auf eine Struktur hostent, im Fehlerfall NULL. Zurückgegeben wird ein Zeiger auf statischen Speicher, der für weitere Umwandlungen benutzt wird. Daher muss der Aufrufer eine Kopie anlegen, wenn die Daten auch nach weiteren Aufrufe von gethostbyname() zur Verfügung stehen sollen.

Typische Fehler


Zurück