dwww Home | Manual pages | Find package

gethostbyname(3)           Library Functions Manual           gethostbyname(3)

NOM
       gethostbyname,   gethostbyaddr,   sethostent,  gethostent,  endhostent,
       h_errno, herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostby-
       name2_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écon-
       seillées.  Les  applications  devraient utiliser getaddrinfo(3), getna-
       meinfo(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  suc-
       cessives. 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 ge-
       thostbyname() 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 cou-
       rant 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  argu-
       ment (typiquement h_errno) et renvoie la chaîne de message d'erreur.

       Les recherches de noms de domaine effectuées par gethostbyname() et ge-
       thostbyaddr() 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 compati-
              bilité ascendante.

VALEUR RENVOYÉE
       Les fonctions gethostbyname() et gethostbyaddr() renvoient un  pointeur
       vers  la  structure  hostent, ou un pointeur NULL si une erreur se pro-
       duit, 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  syno-
              nyme 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 la 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    │
       │endhostent(),      │                      │ env locale                │
       │gethostent_r()     │                      │                           │
       ├───────────────────┼──────────────────────┼───────────────────────────┤
       │herror(),          │ Sécurité des threads │ MT-Safe                   │
       │hstrerror()        │                      │                           │
       ├───────────────────┼──────────────────────┼───────────────────────────┤
       │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   end-
       hostent()  est  utilisée en parallèle dans différents threads d'un pro-
       gramme, 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(), gethostbyad-
       dr(), 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  in-
       dispensable.

       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  pre-
       mier 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, ge-
       thostent_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(), ge-
       thostbyaddr_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éen-
       trantes, si buf est trop petit, les fonctions renvoient ERANGE et l'ap-
       pel devra être effectué par la suite avec un tampon plus grand. La  va-
       riable 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 no-
       tation 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  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.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⟩.

Pages du manuel de Linux 6.03   5 février 2023                gethostbyname(3)

Generated by dwww version 1.15 on Sat Jun 29 00:26:23 CEST 2024.