Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

       gethostbyname,   gethostbyaddr,   sethostent,  gethostent,  endhostent,
       herror, hstrerror - Obtenir des informations concernant le réseau

SYNOPSIS

       #include <netdb.h>
       extern int h_errno;

       struct hostent *gethostbyname(const char *name);

       #include <sys/socket.h> /* for AF_INET */
       struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);

       void sethostent(int stayopen);

       void endhostent(void);

       void herror(const char *s);

       const char * hstrerror(int err);

       /* Extension Système V/POSIX */
       struct hostent *gethostent(void);

       /* Extensions GNU */
       struct hostent *gethostbyname2(const char *name, int af);

       int gethostent_r(
        struct hostent *ret, char *buf, size_t buflen,
        struct hostent **result, int *h_errnop);

       int gethostbyname_r(const char *name,
        struct hostent *ret, char *buf, size_t buflen,
        struct hostent **result, int *h_errnop);

       int gethostbyname2_r(const char *name, int af,
        struct hostent *ret, char *buf, size_t buflen,
        struct hostent **result, int *h_errnop);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       gethostbyname2(), gethostent_r(), gethostbyname_r(),
       gethostbyname2_r(): _BSD_SOURCE || _SVID_SOURCE

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  standard,  soit  une  adresse IPv6 avec la
       notation points-virgules 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 gethostbyname() copie simplement  la  chaîne
       name dans le champ h_name et le champ équivalent struct in_addr dans le
       champ 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 pointé par HOSTALIASES sera  d’abord
       parcouru  à  la  recherche de name (voyez hostname(7) pour le format du
       fichier). Le domaine courant et ses parents sont parcourus si  name  ne
       se termine pas par un point.

       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
       type.  Les types d’adresse valides sont AF_INET et AF_INET6. L’argument
       adresse de l’hôte est un pointeur vers une structure de type  dépendant
       du type de l’adresse, par exemple struct in_addr * (probablement obtenu
       via un appel à inet_addr(3)) pour une adresse de type 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.

       La fonction (obsolète) herror() affiche  le  message  d’erreur  associé
       avec la valeur courante de h_errno sur la sortie standard stderr.

       La  fonction  (obsolète)  hstrerror()  reçoit  un  numéro  d’erreur  en
       argument  (typiquement  h_errno)  et  renvoie  la  chaîne  de   message
       d’erreur.

       Les interrogations du serveur de noms effectuées par gethostbyname() 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.  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] /* for backward compatibility */

       Les membres de la structure hostent sont :

       h_name Nom officiel de l’hôte.

       h_aliases
              Un tableau, terminé par un pointeur NULL, d’alternatives au  nom
              officiel de l’hôte.

       h_addrtype
              Le type d’adresse : toujours AF_INET ou AF_INET6.

       h_length
              La longueur, en octets, de l’adresse.

       h_addr_list
              Un tableau, terminé par un pointeur NULL, 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
              compatibilité ascendante.

VALEUR RENVOYÉE

       Les  fonctions gethostbyname() et gethostbyaddr() renvoient un pointeur
       vers la structure hostent,  ou  un  pointeur  NULL  si  une  erreur  se
       produit,  auquel  cas  h_errno  contient  le code d’erreur. Lorsqu’elle
       n’est pas NULL, la  valeur  de  retour  peut  pointer  sur  une  donnée
       statique. Voyez les notes plus loin.

ERREURS

       La variable h_errno peut prendre les valeurs suivantes :

       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.

       /etc/nsswitch.conf
              Configuration du service de noms.

CONFORMITÉ À

       BSD 4.3, POSIX.1-2001.

NOTES

       Les fonctions gethostbyname() et gethostbyaddr() peuvent  renvoyer  des
       pointeurs  sur  des données statiques susceptibles d’être écrasées d’un
       appel à l’autre. Copier la structure struct hostent ne suffit  pas  car
       elle  contient  elle-même  des  pointeurs.  Une copie en profondeur est
       indispensable.

       Dans l’implémentation BSD originale, l’argument len de  gethostbyname()
       étatut un int. Les spécifications SUS-v2 sont défectueuses et déclarent
       le paramètre len de gethostbyaddr() comme étant de  type  size_t  (ceci
       est erroné car il doit obligatoirement être un int, ce que size_t n’est
       pas toujours. POSIX.1-2001 le déclare socklen_t, ce qui est correct).

       Le prototype BSD  pour  gethostbyaddr()  utilise  const  char  *  comme
       premier argument.

       POSIX.1-2001 marque gethostbyaddr() et gethostbyname() comme obsolètes.
       Voyez getaddrinfo(3), getnameinfo(3), gai_strerror(3).

   Extension Système V/POSIX
       POSIX réclame l’appel gethostent(), qui devrait renvoyer  la  prochaine
       entrée  de  la  base  de données des hôtes. Avec DNS/BIND, cela n’a pas
       plus de sens, mais cela peut être raisonnable si la base de données des
       hôtes  est un fichier qui peut être lu ligne par ligne. Sur beaucoup de
       systèmes, une routine de ce nom lit le  fichier  /etc/hosts.  Elle  est
       disponible  que  lorsque la bibliothèque est construite sans la gestion
       DNS. L’équivalent de la glibc ignore les entrées IPv6.  Cette  fonction
       n’est  pas  ré-entrante, mais la glibc propose une version ré-entrante,
       gethostent_r().

   Extensions GNU
       La glibc2 propose aussi une fonction gethostbyname2()  qui  agit  comme
       gethostbyname(), qui permet de préciser la famille à laquelle l’adresse
       doit appartenir.

       La glibc2 propose aussi les versions ré-entrantes gethostbyname_r()  et
       gethostbyname2_r().  Elles  renvoient  zéro si elles réussissent et une
       valeur non nulle en cas d’erreur. Le résultat  de  l’appel  est  stocké
       dans  la structure d’adresse ret. Après l’appel, *result vaudra NULL en
       cas d’erreur, ou pointera sur le résultat en cas de succès. Des données
       auxiliaires  seront  stockées dans le tampon buf de longueur buflen (si
       le tampon est trop petit, ces fonctions renverront ERANGE). La variable
       h_errno n’est pas modifiée, mais l’adresse d’une variable où stocker le
       code d’erreur est transmise dans h_errnop.

VOIR AUSSI

       getaddrinfo(3), getipnodebyaddr(3), getipnodebyname(3), getnameinfo(3),
       inet_ntop(3),  inet_pton(3),  resolver(3),  hosts(5), nsswitch.conf(5),
       hostname(7), named(8)

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».

                                  2007-07-26                  GETHOSTBYNAME(3)