getipnodebyaddr 子例程
用途
地址到节点名转换。
库
标准 C 库 (libc.a)
(libaixinet )
语法
#include <sys/socket.h>
#include <netdb.h>
struct hostent *getipnodebyaddr(src, len, af, error_num)
const void *src;
size_t len;
int af;
int *error_num; 描述
getipnodebyaddr 子例程具有与 gethostbyaddr 子例程相同的自变量,但添加了错误号。 它是线程安全的。
getipnodebyaddr 子例程在其名称查询中与 gethostbyaddr 子例程相似,但在一种情况下除外。 如果 af 等于 AF_INET6 ,并且 IPv6 地址是 IPv4-mapped IPv6 地址或 IPv4-compatible 地址, 然后跳过前 12 个字节,并将后 4 个字节用作一个 IPv4 地址,其中 af 等于 AF_INET 以查找名称。
如果 getipnodebyaddr 子例程返回成功,那么在 hostent 结构中返回的单个地址是作为自变量传递给此函数的具有相同地址系列和长度的函数的第一个自变量的副本。
getipnodebyaddr 返回的所有信息都是动态分配的: hostent 结构和 h_name h_addr_lisy所指向的数据区。 和 hostent 结构的 h_aliases 成员。 要将此信息返回到系统,将调用函数 freehostent 。
参数
| 项 | 描述 |
|---|---|
| src | 指定节点地址。 它是指向 4 字节 (IPv4) 或 16 字节 (IPv6) 二进制格式地址的指针。 |
| AF | 指定地址系列,即 AF_INET 或 AF_INET6。 |
| len | 指定节点二进制格式地址的长度。 |
| 错误次数 | 将自变量返回给具有相应错误代码的调用者。 |
返回值
getipnodebyaddr 子例程在成功时返回指向 hostent 结构的指针。
如果发生错误, getipnodebyaddr 子例程将返回空指针。 error_num 参数设置为指示错误。
错误代码
| 项 | 描述 |
|---|---|
| 主机未找到 | 找不到由 name 参数指定的主机。 |
| TRY_AGAIN | 本地服务器未接收到来自授权服务器的响应。 请稍后重试。 |
| NO_RECOVERY | 此错误代码指示不可恢复的错误。 |
| NO_ADDRESS | 请求的 name 有效,但在名称服务器上没有因特网地址。 |