当前位置: 首页 > news >正文

域名解析gethostbyname函数

  • 用于将域名 / 主机名解析为对应的网络 IP 地址
  • 函数原型
#include<netdb.h>#include<sys/socket.h>// 依赖套接字相关头文件structhostent{char*h_name;/* 官方域名 */char**h_aliases;/* 别名*/inth_addrtype;/* 地址族(地址类型) */inth_length;/* 地址长度 */char**h_addr_list;/* 地址列表 */}#defineh_addrh_addr_list[0]/* 实现向后兼容性 */structhostent*gethostbyname(constchar*name);
  • 参数
参数名类型含义与使用说明
nameconst char *待解析的域名 / 主机名字符串
1. 可传入域名(如www.baidu.com)、本地主机名(如localhost
);2. 若传入 NULL / 空字符串,默认解析本机主机名;3.const修饰表示入参内容不可被函数修改。
  • 返回值
    • 成功返回 struct hostent 类型的非空指针,指向存储域名解析结果的主机信息结构体,结构体成员对应解析后的主机各类信息,核心成员如下:
成员名含义与特性
h_name主机的正式名称(官方域名)
h_aliases主机的备用名称数组,以NULL
结尾的指针,可存储主机的多个别名域名
h_addrtype主机的地址类型,取值为AF_INET(IPv4)或AF_INET6(IPv6),标识地址协议类型
h_length主机网络地址的长度,单位为字节(如 IPv4 地址长度为 4 字节)
h_addr_list指向主机网络地址的指针数组,地址按网络字节顺序存储,数组以NULL指针终止
h_addr为兼容旧版本设计,等价于h_addr_list中的第一个网络地址
- 失败返回 NULL空指针,且不会设置errno,需通过 全局变量h_errno获取错误码,再调用hstrerror(h_errno)将错误码转为易读的错误信息(需包含<string.h>),常见h_errno错误码: * HOST_NOT_FOUND:指定的域名 / 主机名不存在; * TRY_AGAIN:域名服务器暂时不可用,建议重试; * NO_RECOVERY:域名解析发生不可恢复的错误; * NO_DATA:主机名存在,但无对应的 IP 地址(如仅有别名无实际 IP)
  • demo
#include<stdio.h>#include<netdb.h>#include<sys/socket.h>#include<stdlib.h>#include<arpa/inet.h>intmain(intargc,char*argv[]){inti;if(argc<2){printf("%s <host name>\n",argv[0]);exit(0);}structhostent*host=gethostbyname(argv[1]);for(i=0;host->h_aliases[i]!=NULL;i++){printf("%s\n",host->h_aliases[i]);}printf("Address type:%s\n",host->h_addrtype==AF_INET?"AF_INET":"AF_INET6");for(i=0;host->h_addr_list[i]!=NULL;i++){printf("IP address %d:%s\n",i,inet_ntoa(*(structin_addr*)host->h_addr_list[i]));}endhostent();return0;}
http://www.jsqmd.com/news/399589/

相关文章:

  • AcWing 2714:左偏树 ← 可并堆
  • Win11自动更新怎么永久关闭?有效的Win11强制更新关闭方法
  • 豆包AI推广怎么做?doubaoAD.com服务解析指南 - 品牌2025
  • 如何关闭电脑自动更新?关闭win11系统自动更新的6大方法
  • ThinkBook 15 G2 ITL vs ThinkPad P16v 2025
  • 深度学习篇---四大架构对比
  • 深度学习篇---Mamba
  • 90% 的 Docker 新手 都踩过的 8 个持久化坑!一文讲透底层逻辑,新手直接抄
  • 降AI率和论文查重同时搞定的终极方案:一次操作双达标
  • 深度学习篇---RWKV
  • 深度学习篇---Hyena
  • 7、python学习笔记之字典与集合
  • 《提示工程架构师指南:提升提示内容个性化体验的实用技巧大汇总》
  • 通义千问AI推广怎么做?QwenAD.com服务解析指南 - 品牌2025
  • Spark内存管理原理:如何避免OOM错误的最佳实践
  • 组会PPT和文献综述也查AI了?非论文场景降AI完全指南
  • 基于微信小程序的设备报修系统P
  • 在 Debian 13(以及 12)上安装和配置 tightvncserver 并让普通用户使
  • python学习笔记之字典与集合
  • 基于微信小程序的精致护肤购物系统 化妆品商城系统P
  • 基于微信小程序的考研资源共享平台的设计与实现P
  • 智能招聘AI平台的代码架构:写出可维护代码的技巧
  • 具身智能:原理、算法与系统 第6章 视觉感知与场景理解
  • 大数据领域:数据价值的挖掘与利用技巧
  • 具身智能:原理、算法与系统 第7章 触觉与力觉感知
  • doubaoAD.com服务有哪些具体优势? - 品牌2025
  • BISHI67 穿搭大挑战
  • 从单体到分布式:大数据架构的演进之路
  • OLAP Cube在大数据分析中的关键作用
  • 情感分析在AI原生应用中的隐私与安全问题