.\" -*- 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 "21. Dezember 2020" "" 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 .PP \fBstruct hostent *gethostbyname(const char *\fP\fIname\fP\fB);\fP \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 .PP \fBvoid sethostent(int \fP\fIstayopen\fP\fB);\fP .PP \fBvoid endhostent(void);\fP .PP \fBvoid herror(const char *\fP\fIs\fP\fB);\fP .PP \fBconst char *hstrerror(int \fP\fIerr\fP\fB);\fP .PP /* System V\-/POSIX\-Erweiterung */ \fBstruct hostent *gethostent(void);\fP .PP /* GNU\-Erweiterungen */ \fBstruct hostent *gethostbyname2(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB);\fP .PP \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 .PP \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 .PP \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 .PP \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 .PP .RS -4 Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .RE .PP .PD 0 .ad l \fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP(): .RS 4 .TP 4 Seit Glibc 2.19: _DEFAULT_SOURCE .TP 4 Glibc\-Versionen bis einschließlich 2.19: _BSD_SOURCE || _SVID_SOURCE .RE .PD .PP .PD 0 \fBherror\fP(), \fBhstrerror\fP(): .RS 4 .TP 4 Seit Glibc 2.19: _DEFAULT_SOURCE .TP 4 Glibc 2.8 bis 2.19: _BSD_SOURCE || _SVID_SOURCE .TP Vor Glibc 2.8: none .RE .PD .PP .PD 0 \fBh_errno\fP: .RS 4 .TP 4 Seit Glibc 2.19: _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L .TP 4 Glibc 2.12 bis 2.19: _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L .TP Vor Glibc 2.12: none .RE .ad b .PD .SH BESCHREIBUNG Die Funktionen \fBgethostbyname*\fP(), \fBgethostbyaddr*\fP(), \fBherror\fP() und \fBhstrerror\fP() sind veraltet. Anwendungen sollten stattdessen \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3) und \fBgai_strerror\fP(3) verwenden. .PP 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 oder eine IPv4\-Adresse in der Standard\-Punktnotation. Falls \fIname\fP eine IPv4\-Adresse ist, wird nicht gesucht und \fBgethostbyname\fP() kopiert einfach nur den \fIname\fPn und dessen \fIstruct in_addr\fP\-Äquivalent 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. Mögliche 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 Wenn \fIstayopen\fP wahr (d.h. 1 ist), legt die Funktion \fBsethostent\fP() fest, dass eine bestehende TCP\-Verbindung für Nameserveranfragen genutzt werden soll und dass die Verbindung für die nachfolgenden Anfragen bestehen 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 (veraltete) Funktion \fBherror\fP() gibt die zum aktuellen Wert von \fIh_errno\fP gehörende Fehlermeldung auf \fIstderr\fP aus. .PP Die (veraltete) Funktion \fBhstrerror\fP() ermittelt zu einer Fehlernummer (normalerweise \fIh_errno\fP) die zugehörige Zeichenkette mit der Fehlermeldung. .PP .\" Die durch \fBgethostbyname\fP() und \fBgethostbyaddr\fP() durchgeführten Domain\-Name\-Abfragen verlassen sich auf die konfigurierten Quellen des »Name Service Switch« (\fBnsswitch.conf\fP(5)) oder einen lokalen Name\-Server (\fBnamed\fP(8)). Standardmäßig werden die Quellen des »Name Service Switch« (\fBnsswitch.conf\fP(5)) abgefragt und, falls das fehlschlägt, der lokale Name\-Server (\fBnamed\fP(8)). .SS Geschichtliches Die Datei \fBnsswitch.conf\fP(5) ist die moderne Art, um die Reihenfolge der Rechnerermittlungen zu steuern. .PP In Glibc 2.4 und älter wurde das Schlüsselwort \fIorder\fP verwandt, um die Reihenfolge der Rechnerermittlungen, wie sie in \fI/etc/host.conf\fP (\fBhost.conf\fP(5)) definiert sind, zu steuern. .PP Die Struktur \fIhostent\fP ist in \fI\fP wie folgt definiert: .PP .in +4n .EX 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 */ .EE .in .PP Die Elemente der \fIhostent\fP\-Struktur sind: .TP \fIh_name\fP der offizielle Name des Rechners .TP \fIh_aliases\fP Ein Feld mit den alternativen Namen des Rechners, gefolgt von einem NULL\-Zeiger. .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 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_DATA\fP Der angeforderte Name ist gültig aber verfügt über keine IP\-Adresse. Ein anderer Anfragetyp beim Nameserver für diese Domain könnte eine Antwort liefern. Die Konstante \fBNO_ADDRESS\fP ist ein Synonym für \fBNO_DATA\fP. .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 ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw18 lb lbw29 l l l. Schnittstelle Attribut Wert T{ \fBgethostbyname\fP() T} Multithread\-Fähigkeit T{ MT\-Unsafe race:hostbyname env .br locale T} T{ \fBgethostbyaddr\fP() T} Multithread\-Fähigkeit T{ MT\-Unsafe race:hostbyaddr env .br locale T} T{ \fBsethostent\fP(), .br \fBendhostent\fP(), .br \fBgethostent_r\fP() T} Multithread\-Fähigkeit T{ MT\-Unsafe race:hostent env .br locale T} T{ \fBherror\fP(), .br \fBhstrerror\fP() T} Multithread\-Fähigkeit MT\-Safe T{ \fBgethostent\fP() T} Multithread\-Fähigkeit T{ MT\-Unsafe race:hostent .br race:hostentbuf env locale T} T{ \fBgethostbyname2\fP() T} Multithread\-Fähigkeit T{ MT\-Unsafe race:hostbyname2 .br env locale T} T{ \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP() T} Multithread\-Fähigkeit MT\-Safe env locale .TE .sp 1 In der obigen Tabelle bedeutet \fIhostent\fP in \fIrace:hostent\fP, dass, falls eine der Funktionen \fBsethostent\fP(), \fBgethostent\fP(), \fBgethostent_r\fP() oder \fBendhostent\fP() in verschiedenen Threads eines Programms parallel verwandt werden, konkurrierende Zugriffe auf Daten (»data races«) auftreten könnten. .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 Dienst stellend 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. Eine tiefe Kopie ist erforderlich. .PP 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). .PP 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 die Existenz der Funktion \fBgethostent\fP(), die den nächsten Eintrag in der Host\-Datenbank zurückgeben sollte. Bei der Verwendung von DNS/BIND ergibt 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. Es kann sein, dass sie nur verfügbar ist, 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. .PP Glibc2 hat auch ablaufinvariante Versionen von \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP() und \fBgethostbyname2_r\fP(). Der Aufrufende 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 auf das 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:Diese Funktionen melden \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, sondern 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 5.10 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 \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer und Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE 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 die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .