gethostbyaddr 子例程

用途

按地址获取网络主机项。

Standard C Library (libc.a)
(libbind)
(libnis)
(liblocal)

语法

#include <netdb.h>
struct hostent *gethostbyaddr ( Address,  Length,  Type)
const void *Address, size_t Length, int Type;

描述

盖托斯比德尔 子例程是线程安全的。 但是,该返回值指向由后续调用覆盖的静态数据。 必须复制此数据以进行保存,以供后续调用使用。

盖托斯比德尔 子例程使用主机地址作为搜索键来检索有关主机的信息。 除非指定,否则 gethostbyaddr 子例程使用缺省名称服务排序,即,它将查询 DNS/BIND , NIS ,然后查询本地 /etc/hosts 文件。

使用 DNS/BIND 名称服务解析时,如果文件 /etc/resolv.conf 存在,那么 gethostbyaddr 子例程会查询域名服务器。 盖托斯比德尔 子例程识别域名服务器,如 RFC 883 中所述。

使用 NIS 进行名称解析时,如果 getdomainname 子例程成功并且 Yp_bind 指示 NIS 正在运行,那么 盖托斯比德尔 子例程将查询 NIS。

gethostbyaddr 子例程还在指示执行此操作时搜索本地 /etc/hosts 文件。

盖托斯比德尔 返回一个指向 主机 结构的指针,该结构包含从某个名称解析服务获取的信息。 hostent 结构在 netdb.h 文件中定义。

可以将环境变量 NSORDER 设置为覆盖缺省名称服务排序以及 /etc/netsvc.conf 文件中指定的顺序。

参数

描述
地址 指定主机地址。 主机地址作为指向二进制格式地址的指针进行传递。
长度 指定主机地址的长度。
TYPE 指定该主机地址的域类型。 它可以是 AF_INETAF_INET6

返回值

盖托斯比德尔 子例程在成功时返回指向 主机 结构的指针。

如果发生错误或到达文件末尾,那么 盖托斯比德尔 子例程将返回 NULL 指针并设置 h_errno 以指示该错误。

错误代码

如果发生以下任何错误,那么 盖托斯比德尔 子例程不成功:

错误 描述
未找到 HOST_NOT_FOUND 找不到由 姓名 参数指定的主机。
TRY_AGAIN 本地服务器未接收到来自权威服务器的响应。 请稍后重试。
未恢复 此错误代码指示不可恢复的错误。
无地址 请求的 地址 参数有效,但在名称服务器上不具有名称。
服务不可用 指定的名称服务都未在运行或不可用。

文件

描述
/etc/hosts 包含主机名数据库。
/etc/resolv.conf 包含名称服务器和域名称信息。
/etc/netsvc.conf 包含订购的服务的名称。
/usr/include/netdb.h 包含网络数据库结构。