gethostbyname gethostbyname2 gethostbyaddr gethostent sethostent endhostent herror hstrerror - get network host entry
Lb libc
The
gethostbyname (,);
gethostbyname2 ();
and
gethostbyaddr ();
functions
each return a pointer to an object with the
following structure describing an internet host
referenced by name or by address, respectively.
The
Fa name
argument passed to
gethostbyname ();
or
gethostbyname2 ();
should point to a
NUL -terminated
hostname.
The
Fa addr
argument passed to
gethostbyaddr ();
should point to an address which is
Fa len
bytes long,
in binary form
(i.e., not an IP address in human readable
ASCII
form).
The
Fa type
argument specifies the address family
(e.g.
AF_INET , AF_INET6
etc.) of this address.
The structure returned contains either the information obtained from the name server, named(8), broken-out fields from a line in /etc/hosts or database entries supplied by the yp(8) system. The order of the lookups is controlled by the `hosts' entry in nsswitch.conf5.
struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses from name server */ }; #define h_addr h_addr_list[0] /* address, for backward compatibility */
The members of this structure are:
When using the nameserver,
gethostbyname ();
and
gethostbyname2 ();
will search for the named host in the current domain and its parents
unless the name ends in a dot.
If the name contains no dot, and if the environment variable
``HOSTALIASES
''
contains the name of an alias file, the alias file will first be searched
for an alias matching the input name.
See
hostname(7)
for the domain search procedure and the alias file format.
The
gethostbyname2 ();
function is an evolution of
gethostbyname ();
which is intended to allow lookups in address families other than
AF_INET
for example
AF_INET6
The
sethostent ();
function
may be used to request the use of a connected
TCP
socket for queries.
If the
Fa stayopen
flag is non-zero,
this sets the option to send all queries to the name server using
TCP
and to retain the connection after each call to
gethostbyname (,);
gethostbyname2 ();
or
gethostbyaddr (.);
Otherwise, queries are performed using
UDP
datagrams.
The
endhostent ();
function
closes the
TCP
connection.
The
herror ();
function writes a message to the diagnostic output consisting of the
string argument
Fa string ,
the constant string
Qq Li : ,
and a message corresponding to the value of
h_errno
The
hstrerror ();
function returns a string which is the message text corresponding to the
value of the
Fa err
argument.
const char *ipstr = "127.0.0.1"; struct in_addr ip; struct hostent *hp; if (!inet_aton(ipstr, &ip)) errx(1, "can't parse IP address %s", ipstr); if ((hp = gethostbyaddr((const void *)&ip, sizeof ip, AF_INET)) == NULL) errx(1, "no name associated with %s", ipstr); printf("name associated with %s is %s\n", ipstr, hp->h_name);
The variable h_errno can have the following values:
The
gethostent ();
function
reads the next line of
/etc/hosts
opening the file if necessary.
The
sethostent ();
function
opens and/or rewinds the file
/etc/hosts
If the
Fa stayopen
argument is non-zero,
the file will not be closed after each call to
gethostbyname (,);
gethostbyname2 ();
or
gethostbyaddr (.);
The
endhostent ();
function
closes the file.
Though these functions are thread-safe, still it is recommended to use the getaddrinfo(3) family of functions, instead.
Only the Internet address format is currently understood.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |