GETHOSTBYNAME(3) Manuel du programmeur Linux GETHOSTBYNAME(3)
NOM
gethostbyname, gethostbyaddr, sethostent, endhostent, her
ror, hstrerror - Obtenir des informations concernant le
réseau.
SYNOPSIS
#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);
const char * hstrerror(int err);
DESCRIPTION
La fonction gethostbyname() renvoie une structure de type
hostent pour l'hôte name. La chaîne name est soit un nom
d'hôte, soit une adresse IPv4 en notation pointée stan
dard, soit une adresse IPv6 avec la notation points-vir
gules et points (Cf RFC 1884 pour la description des
adresses IPv6). Si name est une adresse IPv4 ou IPv6,
aucune recherche supplémentaire n'a lieu et gethostby
name() copie simplement la chaine name dans le champ
h_name et le champs équivalent struct in_addr dans le
champs h_addr_list[0] de la structure hostent renvoyée.
Si name ne se termine pas par un point, et si la variable
d'environnement HOSTALIASES est configurée, le fichier
d'alias indiqué par HOSTALIASES sera d'abord parcouru à la
recherche de name.
La fonction gethostbyaddr() renvoie une structure du type
hostent pour l'hôte d'adresse addr. Cette adresse est de
longueur len et du type donné. Le seul type d'adresse
valide est actuellement AF_INET.
La fonction sethostent() indique, si stayopen est vrai
(vaut 1), qu'une socket TCP connectée doit être utilisée
pour interroger le serveur de noms et que la connexion
doit rester ouverte durant les demandes successives.
Sinon l'interrogation utilisera des datagrammes UDP.
La fonction endhostent() ferme la socket TCP connectée
utilisée pour interroger le serveur de noms du domaine.
La fonction (obsolète) herror() affiche le message
d'erreur associé avec la valeur courante de h_errno sur la
BSD 5 Mai 1999 1
GETHOSTBYNAME(3) Manuel du programmeur Linux GETHOSTBYNAME(3)
sortie standard stderr.
La fonction (obsolète) herror() reçoit un numéro d'erreur
en argument (typiquement h_errno) et renvoit la chaîne de
message d'erreur.
Les interrogations du serveur de noms effectuées par geth
ostbyname() et gethostbyaddr() utilisent les éléments
suivants : le serveur de noms named(8), les lignes de
/etc/hosts, et l'annuaire Network Information Service (NIS
ou YP), suivant le contenu de la ligne order du fichier
/etc/host.conf. (Voir resolv+(8)). L'action par défaut
consiste à interroger named(8), puis /etc/hosts.
La structure hostent est définie ainsi dans <netdb.h> :
struct hostent {
char *h_name; /* Nom officiel de l'hôte. */
char **h_aliases; /* Liste d'alias. */
int h_addrtype; /* Type d'adresse de l'hôte. */
int h_length; /* Longueur de l'adresse. */
char **h_addr_list; /* Liste d'adresses. */
}
#define h_addr h_addr_list[0] /* pour compatibilité. */
Les membres de la structure hostent sont :
h_name Nom officiel de l'hôte.
h_aliases
Une table, terminée par zéro, d'alternatives au nom
officiel de l'hôte.
h_addrtype
Le type d'adresse (actuellement, toujours AF_INET).
h_length
La longueur, en octets, de l'adresse.
h_addr_list
Une table, terminée par zéro, d'adresses réseau
pour l'hôte, avec l'ordre des octets du réseau.
h_addr La première adresse dans h_addr_list pour respecter
la compatibilite ascendante.
VALEUR RENVOYÉE
Les fonctions gethostbyname() et gethostbyaddr() renvoient
un pointeur sur la structure hostent, ou bien un pointeur
NULL si une erreur se produit, auquel cas h_errno contient
le code d'erreur.
ERREURS
BSD 5 Mai 1999 2
GETHOSTBYNAME(3) Manuel du programmeur Linux GETHOSTBYNAME(3)
HOST_NOT_FOUND
L'hôte indiqué est inconnu.
NO_ADDRESS ou NO_DATA
Le nom est valide mais ne possède pas d'adresse IP.
NO_RECOVERY
Une erreur fatale du serveur de noms est apparue.
TRY_AGAIN
Une erreur temporaire du serveur de noms est
apparue, essayez un peu plus tard.
FICHIERS
/etc/host.conf
Fichier de configuration de la résolution de noms.
/etc/hosts
Base de données des hôtes.
CONFORMITÉ
BSD 4.3
VOIR AUSSI
resolver(3), hosts(5), hostname(7), resolv+(8), named(8).
TRADUCTION
Christophe Blaess, 1997.
BSD 5 Mai 1999 3