gethostbyaddr_r 子例程
用途
按地址获取网络主机项。
库
Standard C Library (libc.a)
(libbind)
(libnis)
(liblocal)语法
#include <netdb.h>
int gethostbyadd_r(Addr, Len, Type, Htent, Ht_data)
const char *Addr, size_t Len, int Type, struct hostent *Htent, struct hostent_data *Ht_data;描述
此函数在内部调用 盖托斯比德尔 子例程,并将 盖托斯比德尔 子例程返回的值存储到主机结构。
参数
| 项 | 描述 |
|---|---|
| 地址 | 指向主机地址,该地址是指向二进制格式地址的指针。 |
| LEN | 指定该地址的长度。 |
| TYPE | 指定该主机地址的域类型。 它可以是 AF_INET 或 AF_INET6。 |
| 赫滕特 | 指向用于存储 盖托斯塔德尔 子例程的返回值的 hostent 结构。 |
| Ht_数据 | 指向一个 霍斯滕数据 结构。 |
返回值
如果成功,函数返回 0;如果不成功,函数返回-1。
注: 盖托斯比德尔 子例程的返回值指向将被后续调用覆盖的静态数据。 必须在每次调用时复制此数据,以便保存以供后续调用使用。 Gethostbyaddr_r 子例程解决此问题。
如果 姓名 参数为 主机名,那么此子例程将搜索具有该名称的机器作为 IP 地址。 因此,请使用 gethostbyname_r 子例程。
错误代码
如果发生以下任何错误,那么 Gethostbyaddr_r 子例程不成功:
| 项 | 描述 |
|---|---|
| 未找到 HOST_NOT_FOUND | 未找到由 姓名 参数指定的主机。 |
| 重试 | 本地服务器未从授权服务器接收到响应。 请稍后重试。 |
| 未恢复 | 指示发生不可恢复错误。 |
| 无地址 | 所请求的 姓名 参数有效,但是在名称服务器上没有因特网地址。 |
| 服务不可用 | 指定的名称服务都未在运行或不可用。 |
| EINVAL | Hostent 指针为 NULL |
文件
| 项 | 描述 |
|---|---|
| /etc/hosts | 包含主机名的数据库。 |
| /etc/resolv.conf | 包含名称服务器和域名称。 |
| /etc/netsvc.conf | 包含名称服务排序。 |
| /usr/include/netdb.h | 包含网络数据库结构。 |