GETHOSTBYNAME(3)

JMÉNO
gethostbyname, gethostbyaddr, sethostent, endhostent, herror - získej záznam z databáze počítačů

SYNTAXE
#include <netdb.h>
extern int h_errno;

struct hostent *gethostbyname(const char *name);

struct hostent *gethostbyaddr(const char *addr, int len, int type);

void sethostent(int stayopen);

void endhostent(void);

void herror(const char *s);

POPIS
Funkce gethostbyname() vrací strukturu typu hostent pro zadaný počítač name. Doména počítače a jí nadřazené jsou prohledávány pouze tehdy, nekončí-li name tečkou. Pokud name nekončí tečkou a proměnná prostředí HOSTALIASES je nastavena, bude prvně prohledáván soubor, na který ukazuje proměnná HOSTALIASES.

Funkce gethostbyaddr() vrací strukturu typu hostent pro počítač, jehož adresa addr (délky len a typu type) byla zadána. Jediným platný typem adresy je nyní AF_INET.

Funkce sethostent() specifikuje, je-li stayopen pravdivé (1), že k dotazování budou použity spojené TCP sokety a spojení zůstane mezi jednotlivými dotazy otevřeno. Jinak budou k dotazování použity UDP datagramy.

Funkce endhostent() ukončí TCP spojení pro dotazy na nameserver.

Funkce herror() vytiskne chybovou zprávu, která přísluší hodnotě proměnné h_errno.

Funkce gethostbyname() a gethostbyaddr() používají při své činnosti jak nameservery named(8), tak soubor /etc/hosts, ale samozřejmě i NIS nebo YP, to záleží na pořadí definovaném v /etc/host.conf. (Viz resolv+(8)). Standardně je prvně dotazován named(8) a potom soubor /etc/hosts.

Struktura hostent je definována v <netdb.h> následovně:

    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 */

Prvky struktury hostent jsou:

h_name
    Oficiální jméno počítače.

h_aliases
    Nulou ukončené pole alternativních jmen počítačů.

h_addrtype
    Typ adres, v současné době vždy AF_INET.

h_length
    Délka adresy v bajtech.

h_addr_list
    Nulou ukončené pole síťových adres počítače v síťovém pořadí dat.

h_addr
    První adresa v h_addr_list kvůli zpětné kompatibilitě.

NÁVRATOVÁ HODNOTA
Funkce gethostbyname() a gethostbyaddr() vrací strukturu hostent nebo ukazatel NULL v případě výskytu chyby. Potom je nastavena proměnná h_errno.

CHYBY
Proměnná h_errno může obsahovat následující hodnoty:

HOST_NOT_FOUND
    Specifikovaný počítač je neznámý.

NO_ADDRESS
    Jméno je platné, ale nemá žádnou IP adresu.

NO_RECOVERY
    Došlo k výskytu neodstranitelné chyby nameserveru.

TRY_AGAIN
    Došlo k dočasné chybě autoritativního nameserveru. Zkuste později.

SOUBORY

/etc/host.conf
    konfigurační soubor resolveru.

/etc/hosts
    databáze počítačů.

SPLŇUJE STANDARDY
BSD 4.3

DALŠÍ INFORMACE
resolver(3), hosts(5), hostname(7), resolv+ (8), named(8)