gethostent(3N) gethostent(3N)
NAME
gethostent, gethostbyaddr, gethostbyname, sethostent, endhostent -
Hostnamen ermitteln
SYNTAX
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
struct hostent *gethostent(void);
struct hostent *gethostbyaddr(const char *addr, int len, int type);
struct hostent *gethostbyname(const char *name);
void sethostent(int stayopen);
void endhostent(void);
BESCHREIBUNG
gethostbyaddr() und gethostbyname() geben jeweils einen Zeiger auf ein
Objekt mit der Struktur hostent zurück, das einen Internet-Host
beschreibt, auf den über seinen Namen bzw. seine Adresse verwiesen
wird. Abhängig von den in /etc/netconfig aufgelisteten dynamischen
Bibliotheken enthält diese Struktur entweder Informationen, die von
einem DNS-Nameserver (DNS - Domain Name System), von named(1M)
(resolv.so) oder von Feldern aus einer Zeile in /etc/hosts (tcpip.so)
stammen. Wird der Rechner mit einer Bibliothek nicht gefunden, wird
die nächste Bibliothek verwendet.
gethostent() gibt die Informationen aus /etc/hosts aus.
gethostbyaddr() verwendet als Argument addr einen Zeiger auf die
Adresse im binären Format mit der Länge len (und keine Zeichenkette)
(siehe unten).
Anwendungen sollten mit der Option -lsocket gebunden werden.
struct hostent {
char *hname; /* offizieller Name des Rechners */
char **haliases; /* Aliasliste */
int haddrtype; /* Adreßtyp */
int hlength; /* Länge der Adresse */
char **haddrlist; /* Adreßliste */
};
#define haddr haddrlist[0] /* Adresse, für Rückwärtskompatibilität */
Die Elemente dieser Struktur sind:
hname Offizieller Name des Rechners
haliases Array mit Aliasnamen für den Rechner; endet mit Null.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
gethostent(3N) gethostent(3N)
haddrtype Typ der Adresse, die zurückgeliefert wird; im Augen-
blick nur AFINET.
hlength Länge der Adresse in Bytes
haddrlist Zeiger auf eine Liste von Netzadressen für den angege-
benen Rechner; Rechneradressen werden in der Netz-
Byte-Anordnung zurückgeliefert.
Bei Verwendung des Nameservers sucht gethostbyname() in der aktuellen
Domäne und in den übergeordneten Domänen nach dem genannten Host,
sofern der Name nicht mit einem Punkt endet. Wenn der Name keine
Punkte enthält und die Umgebungsvariable HOSTALAIASES den Namen einer
Aliasdatei enthält, wird zuerst die Aliasdatei nach einem Aliasnamen
durchsucht, der dem Eingabenamen entspricht.
gethostent() liest einen Eintrag der Datei /etc/hosts und öffnet gege-
benenfalls vorher die Datei. Wurde die Datei bereits bei einer voran-
gegangen Lese-Operation geöffnet, liefert die Funktion den nächsten
Eintrag.
sethostent() öffnet die Datei und positioniert auf den Anfang. Falls
das Flag stayopen ungleich Null ist, wird die Datei /etc/hosts nicht
nach jedem Aufruf von gethostent() geschlossen. Dies erfolgt entweder
direkt oder durch einen der anderen "gethost"-Aufrufe.
endhostent() schließt die Datei.
Bei Verwendung von tcpip.so durchsuchen gethostbyname() und
gethostbyaddr() die Datei /etc/hosts sequentiell (am Anfang der Datei
beginnend), bis ein passender Rechnername oder eine passende Rechner-
adresse gefunden wurde, oder bis EOF erreicht wurde. Rechneradressen
werden in Netz-Byte-Anordnung geliefert.
gethostbyaddr() erwartet einen Zeiger auf eine Adreßstruktur. Diese
Struktur ist für jeden Adreßtyp type eindeutig. Für eine Adresse vom
Typ AFINET ist dies die Struktur inaddr (siehe auch <netinet/in.h>).
DIAGNOSE
Bei Auftreten eines Fehlers oder bei EOF wird ein NULL-Zeiger zurück-
geliefert.
HINWEISE
Jede Information wird in statischen Bereichen gehalten, so daß sie
kopiert werden muß, wenn sie gesichert werden soll. Im Augenblick wird
nur das Internet-Adreßformat als gültig erkannt.
DATEIEN
/etc/hosts (/etc/inet/hosts)
/etc/netconfig
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
gethostent(3N) gethostent(3N)
/usr/lib/libsocket.so
/usr/lib/resolv.so
/usr/lib/tcpip.so
SIEHE AUCH
named(1M), resolver(3N), hosts(4), netconfig(4), in(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98