.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified 1993-05-22, David Metcalfe .\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu) .\" Modified 1997-02-16, Andries Brouwer (aeb@cwi.nl) .\" Modified 1998-12-21, Andries Brouwer (aeb@cwi.nl) .\" Modified 2000-08-12, Andries Brouwer (aeb@cwi.nl) .\" Modified 2001-05-19, Andries Brouwer (aeb@cwi.nl) .\" Modified 2002-08-05, Michael Kerrisk .\" Modified 2004-10-31, Andries Brouwer .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GETHOSTBYNAME 3 "11. März 2014" "" Linux\-Programmierhandbuch .SH BEZEICHNUNG gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, gethostbyname_r, gethostent_r \- ermittelt den Netzwerkeintrag für einen Host .SH ÜBERSICHT .nf \fB#include \fP \fBextern int h_errno;\fP .sp \fBstruct hostent *gethostbyname(const char *\fP\fIname\fP\fB);\fP .sp \fB#include \fP /* für AF_INET */ \fBstruct hostent *gethostbyaddr(const void *\fP\fIaddr\fP\fB,\fP \fB socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB);\fP .sp \fBvoid sethostent(int \fP\fIstayopen\fP\fB);\fP .sp \fBvoid endhostent(void);\fP .sp \fBvoid herror(const char *\fP\fIs\fP\fB);\fP .sp \fBconst char *hstrerror(int \fP\fIerr\fP\fB);\fP .sp /* System V/POSIX\-Erweiterung */ .br \fBstruct hostent *gethostent(void);\fP .sp /* GNU\-Erweiterungen */ .br \fBstruct hostent *gethostbyname2(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB);\fP .sp \fBint gethostent_r(\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .sp \fBint gethostbyaddr_r(const void *\fP\fIaddr\fP\fB, socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .sp \fBint gethostbyname_r(const char *\fP\fIname\fP\fB,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .sp \fBint gethostbyname2_r(const char *\fP\fIname\fP\fB, int \fP\fIaf,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .fi .sp .in -4n Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .in .sp .PD 0 .ad l \fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP(): .RS 4 _BSD_SOURCE || _SVID_SOURCE .RE \fBherror\fP(), \fBhstrerror\fP(): .RS 4 .TP 4 Seit Glibc 2.8: _BSD_SOURCE || _SVID_SOURCE .TP Vor Glibc 2.8: keine .RE \fBh_errno\fP: .RS 4 .TP 4 Seit Glibc 2.12: _BSD_SOURCE || _SVID_SOURCE || (_POSIX_C_SOURCE < 200809L && _XOPEN_SOURCE < 700) .TP Bis Glibc 2.12: keine .RE .ad b .PD .SH BESCHREIBUNG Die Funktionen \fBgethostbyname*\fP(), \fBgethostbyaddr*\fP(), \fBherror\fP() und \fBhstrerror\fP() sind obsolet. Anwendungen sollten stattdessen \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3) und \fBgai_strerror\fP(3) verwenden. Die Funktion \fBgethostbyname\fP() gibt eine Struktur vom Typ \fIhostent\fP für den angegebenen Host \fIname\fP zurück. Darin ist \fIname\fP entweder ein Host\-Name, eine IPv4\-Adresse in der Standard\-Punktnotation (wie für \fBinet_addr\fP(3)) oder eine IPv6\-Adresse in Doppelpunktnotation (und womöglich auch in Punktnation; siehe RFC\ 1884 für die Beschreibung von IPv6\-Adressen). Falls \fIname\fP eine IPv4\- oder IPv6\-Adresse ist, wird nicht gesucht und \fBgethostbyname\fP() kopiert einfach nur den \fIname\fPn und dessen Äquivalent \fIstruct in_addr\fP in das Feld \fIh_addr_list[0]\fP der zurückgegebenen \fIhostent\fP\-Struktur. Falls \fIname\fP nicht mit einem Punkt endet und die Umgebungsvariable \fBHOSTALIASES\fP gesetzt ist, wird zuerst die von \fIHOSTALIASES\fP bestimmte Aliasdatei nach dem \fIname\fPn durchsucht (siehe \fBhostname\fP(7) für das Dateiformat). Falls der \fIname\fP nicht mit einem Punkt endet, werden die aktuelle Domain und ihre übergeordneten Domains durchsucht. .PP Die Funktion \fBgethostbyaddr\fP() gibt für die angegebene Adresse \fIaddr\fP eine Struktur vom Typ \fIhostent\fP mit der Länge \fIlen\fP und dem Adresstyp \fItype\fP zurück. Gültige Adresstypen sind \fBAF_INET\fP und \fBAF_INET6\fP. Das Argument \fIaddr\fP ist ein Zeiger auf eine Struktur, die vom Adresstyp abhängt, beispielsweise eine \fIstruct in_addr *\fP (möglicherweise ermittelt durch einen Aufruf von \fBinet_addr\fP(3)) für den Adresstyp \fBAF_INET\fP. .PP Die Funktion \fBsethostent\fP() legt fest, falls \fIstayopen\fP wahr (1) ist, dass ein bestehende TCP\-Verbindung für Nameserveranfragen genutzt werden soll und dass die Verbindung für die nachfolgenden Anfragen offen bleiben soll. Ansonsten werden für Nameserveranfragen UDP\-Datagramme benutzt. .PP Die Funktion \fBendhostent\fP() beendet die Nutzung einer TCP\-Verbindung für Namerserveranfragen. .PP Die Funktion \fBherror\fP() gibt die zum aktuellen Wert von \fIh_errno\fP gehörende Fehlermeldung auf \fIstderr\fP aus. .PP Die obsolete Funktion \fBhstrerror\fP() ermittelt zu einer Fehlernummer (normalerweise\fIh_errno\fP) die zugehörige Zeichenkette mit der Fehlermeldung. .PP .\" (See .\" .BR resolv+ (8)). Die Funktionen \fBgethostbyname\fP() und \fBgethostbyaddr\fP() benutzen für ihre Anfragen den Nameserver \fBnamed\fP(8), eine Zeile aus der Datei \fI/etc/hosts\fP und den Network Information Service (NIS oder YP). Was davon und in welcher Reihenfolge benutzt wird, bestimmt die \fIorder\fP\-Zeile in der Datei \fI/etc/host.conf\fP. Das Standardverhalten ist zuerst den Nameserver zu befragen und danach die Datei \fI/etc/hosts\fP zu durchsuchen. .PP Die Struktur \fIhostent\fP ist in \fI\fP wie folgt definiert: .sp .in +4n .nf .ne 7 struct hostent { char *h_name; /* offizieller Name des Rechners */ char **h_aliases; /* Aliasliste */ int h_addrtype; /* Host\-Adresstyp */ int h_length; /* Länge der Adresse */ char **h_addr_list; /* Adressliste */ } #define h_addr h_addr_list[0] /* für Abwärtskompatibilität */ .fi .in .PP Die Elemente der \fIhostent\fP\-Struktur sind: .TP \fIh_name\fP der offizielle Name des Rechners .TP \fIh_aliases\fP ein Null\-terminiertes Feld mit den alternativen Namen des Rechners .TP \fIh_addrtype\fP der Adresstyp, z.Zt. immer \fBAF_INET\fP oder \fBAF_INET6\fP .TP \fIh_length\fP die Länge der Adresse in Bytes .TP \fIh_addr_list\fP ein Null\-terminiertes Feld von Zeigern auf Netzwerkadressen für den Rechner (in der Netzwerk\-Bytereihenfolge), gefolgt von einem Null\-Zeiger .TP \fIh_addr\fP die erste Adresse in \fIh_addr_list\fP, für Abwärtskompatibilität .SH RÜCKGABEWERT Die Funktionen \fBgethostbyname\fP() und \fBgethostbyaddr\fP() geben eine \fIhostent\fP\-Struktur zurück. Bei einem Fehler wird ein Null\-Zeiger zurückgegeben, in diesem Fall enthält die Variable \fIh_errno\fP die Fehlernummer. Falls der Zeiger von NULL verschieden ist, kann der Rückgabewert auf statische Daten weisen; siehe die folgenden Anmerkungen. .SH FEHLER Die Variable \fIh_errno\fP kann folgende Werte annehmen: .TP \fBHOST_NOT_FOUND\fP Der angegebene Rechner ist unbekannt. .TP \fBNO_ADDRESS\fP oder \fBNO_DATA\fP Der angegebene Name ist gültig, aber es existiert dazu keine IP\-Adresse. .TP \fBNO_RECOVERY\fP Ein nichtbehebbarer Nameserverfehler ist aufgetreten. .TP \fBTRY_AGAIN\fP Beim maßgebenden Nameserver ist ein vorübergehender Fehler aufgetreten. Versuchen Sie es später noch einmal. .SH DATEIEN .TP \fI/etc/host.conf\fP Konfigurationsdatei des Resolvers (Namensauflöser) .TP \fI/etc/hosts\fP Host\-Datenbankdatei .TP \fI/etc/nsswitch.conf\fP Konfigurationsdatei für »name service switch« .SH "KONFORM ZU" POSIX.1\-2001 beschreibt \fBgethostbyname\fP(), \fBgethostbyaddr\fP(), \fBsethostent\fP(), \fBendhostent\fP(), \fBgethostent\fP() und \fIh_errno\fP; \fBgethostbyname\fP(), \fBgethostbyaddr\fP() und \fIh_errno\fP sind in diesem Standard als allmählich außer Gebrauch kommend gekennzeichnet.POSIX.1\-2008 entfernt die Beschreibungen von \fBgethostbyname\fP(), \fBgethostbyaddr\fP() nd \fIh_errno\fP und empfiehlt stattdessen die Verwendung von \fBgetaddrinfo\fP(3) und \fBgetnameinfo\fP(3). .SH ANMERKUNGEN Die Funktionen \fBgethostbyname\fP() und \fBgethostbyaddr\fP() können Zeiger auf statische Daten zurückgeben, welche bei späteren Aufrufen überschrieben werden könnten. Das Kopieren von \fIstruct hostent\fP ist nicht ausreichend, weil sie Zeiger enthält. Es ist ein »tiefes Kopieren« erforderlich. .LP In der ursprünglichen BSD\-Implementierung von \fBgethostbyname\fP() war das Argument \fIlen\fP ein \fIint\fP. Der Standard SUSv2 ist fehlerhaft und weist dem Argument \fIlen\fP von \fBgethostbyaddr\fP() den Typ \fIsize_t\fP zu. (Das ist falsch, weil es \fIint\fP sein muss und das für \fIsize_t\fP nicht der Fall ist. POSIX.1\-2001 macht es zu\fIsocklen_t\fP, was in Ordnung ist.) Siehe auch \fBaccept\fP(2). .LP Der BSD\-Prototyp für \fBgethostbyaddr\fP() verwendet \fIconst char\ *\fP als Datentyp für das erste Argument. .SS "System V/POSIX\-Erweiterung" .\" e.g., Linux, FreeBSD, UnixWare, HP-UX .\" e.g., FreeBSD, AIX POSIX verlangt den Aufruf von \fBgethostent\fP(), welcher den nächsten Eintrag in der Host\-Datenbank zurückgeben sollte. Bei der Verwendung von DNS/BIND macht das nicht viel Sinn, aber es kann sinnvoll sein, wenn die Host\-Datenbank eine Datei ist, die Zeile für Zeile gelesen werden kann. Auf vielen Systemen liest eine Routine mit diesem Namen aus der Datei \fI/etc/hosts\fP. Sie ist nur verfügbar, wenn die Bibliothek ohne DNS\-Unterstützung gebaut wurde. Die Glibc\-Version ignoriert Ipv6\-Einträge. Diese Funktion ist nicht ablaufinvariant. Glibc stellt die ablaufinvariante Version \fBgethostent_r\fP() bereit. .SS GNU\-Erweiterungen Glibc2 enthält auch \fBgethostbyname2\fP(), welche wie \fBgethostbyname\fP() arbeitet, ermöglicht aber die Vorgabe der Adressfamilie, zu der die Adresse gehören muss.but permits to specify the address family to which the address must belong. .LP Glibc2 hat auch ablaufinvariante Versionen von \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP() und \fBgethostbyname2_r\fP(). Der Aufrudende stellte eine \fIhostent\fP\-Struktur \fIret\fP, die bei Erfolg ausgefüllt wird, und einen temporären Arbeitspuffer \fIbuf\fP der Größe \fIbuflen\fP bereits. Nach dem Aufruf zeigt bei Erfolg \fIresult\fP zu dem Ergebnis. Im Falle eines Fehlers oder wenn kein Eintrag gefunden wird, ist \fIresult\fP NULL. Die Funktionen liefern 0 bei Erfolg und bei einem Fehler eine von null verschiedene Fehlernummer. Zusätzlich zu den Fehlern, die von den nicht ablaufinvarianten Versionen dieser Funktionen zurückgegeben werden, melden dieses Funktionen den Fehler \fBERANGE\fP, falls \fIbuf\fP zu klein war. In diesem Fall sollte der Aufruf mit einem größeren Puffer wiederholt werden. Die globale Variable \fIh_errno\fP wird nicht verändert, aber die Adresse einer Variablen zur Speicherung von Fehlernummern wird in \fIh_errnop\fP übergeben. .SH FEHLER .\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973 \fBgethostbyname\fP() erkennt in IPv4\-Adresszeichenketten in Punktnotation keine Bestandteile in hexadezimaler Notation. .SH "SIEHE AUCH" .\" .BR getipnodebyaddr (3), .\" .BR getipnodebyname (3), .\" .BR resolv+ (8) \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3), \fBresolver\fP(3), \fBhosts\fP(5), \fBnsswitch.conf\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 3.74 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%http://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an .