Linux C 网络_域名转换函数族

编程入门 行业动态 更新时间:2024-10-25 12:16:51

Linux C 网络_域名转换<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数族"/>

Linux C 网络_域名转换函数族

在实际的网络应用中,常常会使用类似 “www sina. com.cn" 这样的域名替代 IP 地址来标识一个服务器,所以需要函数将域名和实际的 IP 地址进行转换。

Linux 在 netdb.h 头文件中定义了一个结构体,用于描述一个主机的相关参数,其形式如下:

struct hostent
{char *h_name;//主机的正式名称char *h_aliases;//主机的别名int h_addrype;//主机的地址类型int h_length;//主机的地址长度char **h_addr_list;//主机的IP地址列表
};
#define h_addr h_addr_list[0] //主机的第一个IP地址

域名转换函数

Linux 提供了 gethostbyname 和 gethostbyaddr 函数用于处理域名和地址的转换。

#include <netdb.h>
extern int h_errno;
struct hostent *gethostbyname(const char *name);#include <sys/socket.h>
struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
  • gethostbyname 函数用于实现域名或主机名到 IP 地址的转换,参数 hostname 指向存放域名或主机名的字符串。
  • gethostbyaddr 函数用于实现 IP 地址到域名或主机名的转换,参数 addr 是一个指向含有地址结构的指针;参数 len 是此结构的大小,对于 IPv4 而言其值为4,对于 IPv6 而言其值为16,参数 family 为协议族。
  • 若调用这两个函数成功,则返回一个指向 hostent 结构的指针,若调用失败则返回空指针 NULL,同时设置全局变量 h_errno 为相应的值。

h_errno 可能的取值

h_errnno说明
HOST_NOT_FOUND找不到对应的主机
TRY_AGAIN出错重试
NO_RECOVERY出现了不可修复的错误
NO_DATA该名字有效,但是没有找到该记录

应用实例

1. 使用 gethostbyname 函数
2. 使用 gethostbyaddr 函数

更多推荐

Linux C 网络_域名转换函数族

本文发布于:2023-07-28 16:29:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1250165.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   域名   网络   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!