Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       gethostbyname,   gethostbyaddr,   sethostent,  gethostent,  endhostent,  h_errno,  herror,
       hstrerror,    gethostbyaddr_r,    gethostbyname2,    gethostbyname2_r,    gethostbyname_r,
       gethostent_r - Obtenir des informations concernant le réseau

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <netdb.h>

       void sethostent(int stayopen);
       void endhostent(void);

       [[obsolète]] extern int h_errno;

       [[obsolète]] struct hostent *gethostbyname(const char *name);
       [[obsolète]] struct hostent *gethostbyaddr(const void addr[.len],
                                                    socklen_t len, int type);

       [[obsolète]] void herror(const char *s);
       [[obsolète]] const char *hstrerror(int err);

       /* Extension System V/POSIX */
       struct hostent *gethostent(void);

       /* Extensions GNU */
       [[obsolète]]
       struct hostent *gethostbyname2(const char *name, int af);

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

       [[obsolète]]
       int gethostbyaddr_r(const void addr[restrict .len], socklen_t len,
                        int type,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);
       [[obsolète]]
       int gethostbyname_r(const char *restrict name,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);
       [[obsolète]]
       int gethostbyname2_r(const char *restrict name, int af,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       gethostbyname2(),       gethostent_r(),       gethostbyaddr_r(),        gethostbyname_r(),
       gethostbyname2_r() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc <= 2.19:
               _BSD_SOURCE || _SVID_SOURCE

       herror(), hstrerror() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           De la glibc 2.8 à la glibc 2.19 :
               _BSD_SOURCE || _SVID_SOURCE
           Avant la glibc 2.8 :
               aucun

       h_errno :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L
           De la glibc 2.12 à la glibc 2.19 :
               _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L
           Avant la glibc 2.12 :
               aucun

DESCRIPTION

       gethostbyname*(),  gethostbyaddr*(),  herror()  et  hstrerror()  sont  déconseillées.  Les
       applications devraient utiliser getaddrinfo(3), getnameinfo(3)  et  gai_strerror(3)  à  la
       place.

       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  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
       (comme  pour  inet_addr(3)). Si name est une adresse IPv4, 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 (consultez hostname(7) pour  le  format  du  fichier).  Le
       domaine courant et ses parents sont parcourus à moins que name se termine 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 valables sont
       AF_INET  et  AF_INET6  (définis  dans <sys/socket.h>). 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  à l’aide d’un appel à inet_addr(3)) pour une adresse de
       type AF_INET.

       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 recherches de noms  de  domaine  effectuées  par  gethostbyname()  et  gethostbyaddr()
       dépendent   des   sources   configurées   de   service   de   noms  (Name  Service  Switch
       — nsswitch.conf(5)) ou d'un serveur de noms local (named(8)). L'action par défaut  est  de
       chercher  dans  les  sources  du  service  de  noms configuré (nsswitch.conf(5), et en cas
       d'échec, dans un serveur de noms local (named(8)).

   Historique
       Le fichier nsswitch.conf(5) est un moyen moderne pour  contrôler  l'ordre  des  recherches
       d'hôte.

       Dans la glibc 2.4 et antérieure, le mot clé order était utilisé pour contrôler l'ordre des
       recherches d'hôte comme il est défini dans /etc/host.conf (host.conf(5)).

       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 : actuellement 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. Consultez les notes plus loin.

ERREURS

       La variable h_errno peut prendre les valeurs suivantes :

       HOST_NOT_FOUND
              L'hôte indiqué est inconnu.

       NO_DATA
              Le nom de la requête est valable, mais ne possède pas d'adresse IP. Un  autre  type
              de  requête  au  serveur  de  noms  pour  ce  domaine peut renvoyer une réponse. La
              constante NO_ADDRESS est un synonyme de NO_DATA.

       NO_RECOVERY
              Une erreur fatale du serveur de noms est survenue.

       TRY_AGAIN
              Une erreur temporaire d'un serveur de noms faisant autorité est  survenue,  essayez
              un peu plus tard.

FICHIERS

       /etc/host.conf
              fichier de configuration de resolver (résolution de noms)

       /etc/hosts
              Base de données des hôtes.

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

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌──────────────────────┬──────────────────────┬───────────────────────────────────────────┐
       │InterfaceAttributValeur                                    │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyname()       │ Sécurité des threads │ MT-Unsafe race:hostbyname env locale      │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyaddr()       │ Sécurité des threads │ MT-Unsafe race:hostbyaddr env locale      │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │sethostent(),         │ Sécurité des threads │ MT-Unsafe race:hostent env locale         │
       │endhostent(),         │                      │                                           │
       │gethostent_r()        │                      │                                           │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │herror(), hstrerror() │ Sécurité des threads │ MT-Safe                                   │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostent()          │ Sécurité des threads │ MT-Unsafe race:hostent race:hostentbuf    │
       │                      │                      │ env locale                                │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyname2()      │ Sécurité des threads │ MT-Unsafe race:hostbyname2 env locale     │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyaddr_r(),    │ Sécurité des threads │ MT-Safe env locale                        │
       │gethostbyname_r(),    │                      │                                           │
       │gethostbyname2_r()    │                      │                                           │
       └──────────────────────┴──────────────────────┴───────────────────────────────────────────┘
       Dans la table ci-dessus, hostent dans race:hostent  signifie  que  si  une  des  fonctions
       sethostent(),  gethostent(), gethostent_r() ou endhostent() est utilisée en parallèle dans
       différents threads d'un programme, des situations de concurrence  de  données  peuvent  se
       produire.

STANDARDS

       POSIX.1-2001   spécifie   gethostbyname(),  gethostbyaddr(),  sethostent(),  endhostent(),
       gethostent() et  h_errno.  gethostbyname(),  gethostbyaddr(),  et  h_errno  sont  marquées
       obsolètes  dans  ce standard. POSIX.1-2008 supprime les spécifications de gethostbyname(),
       gethostbyaddr() et h_errno et recommande à la place  l'utilisation  de  getaddrinfo(3)  et
       getnameinfo(3).

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() était 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 (c’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).
       Consultez également accept(2).

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

   Extension System 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
       n'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  gethostent_r(), gethostbyaddr_r(),
       gethostbyname_r() et gethostbyname2_r(). L'appelant fournit une structure hostent à l’aide
       de  ret qui sera remplie en cas de succès et un tampon de travail temporaire buf de taille
       buflen. Après l'appel, result pointera vers le résultat en cas de succès. En cas  d'erreur
       ou  si  aucune entrée n'a été trouvée, result vaudra NULL Les fonctions renvoient 0 en cas
       de succès et une valeur non nulle en cas d'erreur. En plus des erreurs renvoyées  par  ces
       fonctions  réentrantes,  si  buf est trop petit, les fonctions renvoient ERANGE et l'appel
       devra être effectué par la suite avec un tampon plus grand. La variable h_errno n'est  pas
       modifiée,  mais l'adresse d'une variable où est stocké le code d'erreur est transmise dans
       h_errnop.

BOGUES

       gethostbyname() ne reconnaît pas les éléments d'une adresse IPv4 en  notation  pointée  si
       ces éléments sont exprimés en hexadécimal.

VOIR AUSSI

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

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre Giraud
       <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.