Provided by: manpages-es_1.55-10_all bug

NOMBRE

       gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror
       - obtienen una entrada de anfitrion de red

SINOPSIS

       #include <netdb.h>
       extern int h_errno;

       struct hostent *gethostbyname(const char *name);

       #include <sys/socket.h>        /* para AF_INET */
       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);

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

       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);

DESCRIPCI'ON

       La funcion gethostbyname() devuelve una  estructura  del  tipo  hostent
       para  el  anfitrion  (host)  dado name.  Aqui, name es ora un nombre de
       anfitrion, ora una direccion IPv4 en la notacion normal de puntos,  ora
       una  direccion  IPv6  en  la  notacion de dos puntos (y posiblemente de
       puntos). (Vea la RFC 1884 para una descripcion de  las  direcciones  en
       IPv6).   Si  name  es  una direccion IPv4 o IPv6, no se realiza ninguna
       busqueda y gethostbyname() simplemente copia name en el campo h_name  y
       su  equivalente  struct  in_addr  en  el  campo  h_addr_list[0]  de  la
       estructura hostent devuelta.  Si name no termina  con  un  punto  y  la
       variable de ambiente HOSTALIASES esta asignada, se buscara primero name
       en el fichero de alias senalado por HOSTALIASES (vea  hostname(7)  para
       saber  como  es el formato del fichero).  Se buscan el dominio actual y
       sus ancestros a menos que name termine en punto.

       La funcion gethostbyaddr() devuelve una  estructura  del  tipo  hostent
       para  la  direccion  de  anfitrion  dada addr de longitud len y de tipo
       type. El unico tipo de direccion valido actualmente es AF_INET.

       La funcion sethostent() especifica, si stayopen es  true  (1),  que  se
       deberia  emplear  un  conector (socket) TCP para las interrogaciones al
       servidor de nombres  y  que  la  conexion  deberia  permanecer  abierta
       durante  sucesivas  preguntas. De otro modo, las peticiones al servidor
       de nombres utilizaran datagramas UDP.

       La funcion endhostent() termina el uso de una  conexion  TCP  para  las
       peticiones al servidor de nombres.

       La  (obsoleta)  funcion  herror() muestra en stderr un mensaje de error
       asociado con el valor actual de h_errno.

       La  (obsoleta)  funcion   hstrerror()   toma   un   numero   de   error
       (habitualmente    h_errno)   y   devuelve   la   cadena   del   mensaje
       correspondiente.

       Las  preguntas  al  servidor   de   nombres   llevadas   a   cabo   por
       gethostbyname()  y  gethostbyaddr() usan una combinacion de uno o todos
       los servidores de nombres named(8), una declaracion en /etc/hosts, y el
       Servicio  de  Informacion  de  Red  (NIS, antes Paginas Amarillas, YP),
       dependiendo de los contenidos de la linea order en /etc/host.conf. (Vea
       resolv+(8)).  La accion predeterminada es preguntar a named(8), seguido
       por /etc/hosts.

       La estructura hostent se define en <netdb.h> como sigue:

              struct hostent {
                      char    *h_name;        /* nombre oficial del anfitrion */
                      char    **h_aliases;    /* lista de alias */
                      int     h_addrtype;     /* tipo direccion anfitrion */
                      int     h_length;       /* longitud de la direccion */
                      char    **h_addr_list;  /* lista de direcciones */
              }
              #define h_addr  h_addr_list[0]  /* por compatibilidad atras */

       Los miembros de la estructura hostent son:

       h_name El nombre oficial de un anfitrion.

       h_aliases
              Una  cadena  terminada  en  el  caracter  nulo  de  los  nombres
              alternativos para el anfitrion.

       h_addrtype
              El tipo de direccion; siempre AF_INET de momento.

       h_length
              La longitud de la direccion en bytes.

       h_addr_list
              Una  cadena  terminada  en  nulo  de  direcciones de red para el
              anfitrion en orden de bytes de red.

       h_addr La primera direccion en  h_addr_list  por  compatibilidad  hacia
              atras.

VALOR DEVUELTO

       Las funciones gethostbyname() y gethostbyaddr() devuelven la estructura
       hostent, o un puntero NULL si ha ocurrido un error. En caso  de  error,
       la variable h_errno contiene un numero de error.

ERRORES

       La variable h_errno puede tener los siguientes valores:

       HOST_NOT_FOUND
              El anfitrion especificado es desconocido.

       NO_ADDRESS o NO_DATA
              El nombre pedido es valido pero no tiene una dirreccion IP.

       NO_RECOVERY
              Ha ocurrido un error no recuperable del servidor de nombres.

       TRY_AGAIN
              Ha  ocurrido  un error temporal sobre un servidor de nombres con
              autoridad. Intente luego mas tarde.

FICHEROS

       /etc/host.conf
              fichero de configuracion del resolvedor

       /etc/hosts
              fichero de base de datos de anfitriones

CONFORME A

       BSD 4.3.

OBSERVACIONES

       El estandar SUS-v2 contiene  fallos  y  declara  el  parametro  len  de
       gethostbyaddr()  de  tipo  size_t.  (Esto esta equivocado, porque tiene
       que ser de tipo int, y size_t no lo es. POSIX 1003.1-2001 lo especifica
       de tipo socklen_t, lo cual es correcto.)

       Las   funciones   gethostbyname()  y  gethostbyaddr()  pueden  devolver
       punteros a datos estaticos, que pueden ser sobreescritos  por  llamadas
       posteriores.  Copiar la estructura hostent no es suficiente, puesto que
       contiene punteros - se requiere una copia en profundidad.

       Glibc2 tambien tiene una funcion gethostbyname2() que hace lo mismo que
       gethostbyname(),  pero  permite especificar la familia de direcciones a
       la que la direccion debe pertenecer.

       Glibc2  tambien  tiene  versiones   reentrantes   gethostbyname_r()   y
       gethostbyname2_r().   Estas  devuelven  0  en  caso de exito y un valor
       distinto de cero en caso de error.   El  resultado  de  la  llamada  es
       almacenado  en  la  estructura  con  la  direccion  ret.  Despues de la
       llamada, *result valdra NULL en caso de error o apuntara  al  resultado
       en  caso  de  exito.  Los datos auxiliares son almacenados en el buffer
       buf de longitud buflen.  (Si el  buffer  es  demasiado  pequeno,  estas
       funciones  devolveran  ERANGE.)   Ninguna  variable  global  h_errno es
       modificada, pero se pasa en h_errnop la direccion de una variable donde
       almacenar numeros de error.

       POSIX  1003.1-2001  senala  que gethostbyaddr() y gethostbyname() estan
       anticuadas, e introduce

       struct hostent *getipnodebyaddr (const void *restrict addr,
         socklen_t len, int type, int *restrict error_num);

       struct hostent *getipnodebyname (const char *name,
         int type, int flags, int *error_num);

V'EASE TAMBI'EN

       resolver(3), hosts(5), hostname(7), resolv+(8), named(8)