新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2019-08-21】使用DNS函数获取IP地址简单代码笔记

发布时间:2026/9/28 20:58:28来源:尧图网络
【2019-08-21】使用DNS函数获取IP地址简单代码笔记
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-08-21 标题使用DNS函数获取IP地址简单代码笔记分类编程 / C C 标签CC·gethostbyname·getaddrinfo使用DNS函数获取IP地址简单代码笔记话不多说在网络编程中我们一般都要对域名进行DNS解析解析函数一般都是gethostbyname但是这个函数已经被过时了而且有多线程风险现在官方建议使用getaddrinfo那么这里我们就简单笔记下如何使用这2个API#includestdio.h#includearpa/inet.h#includenetdb.h#defineLOGprintfvoidtest_gethostbyname(constchar*p_hostname){LOG(test gethostbyname begin--);char**pptrNULL;structhostent*hptrNULL;if((hptrgethostbyname(p_hostname))NULL){LOG(gethostbyname error.errno:%d error:%s ,h_errno,hstrerror(h_errno));return;}LOG(h_name:%s ,hptr-h_name);LOG(h_aliases:);for(pptrhptr-h_aliases;*pptr!NULL;pptr)LOG( alias:%s ,*pptr);LOG(h_length:%d ,hptr-h_length);LOG(h_addrtype:%d ,hptr-h_addrtype);switch(hptr-h_addrtype){caseAF_INET:{LOG(h_addr_list:);for(pptrhptr-h_addr_list;*pptr!NULL;pptr){charstr[INET_ADDRSTRLEN]{0};LOG( addr:%s ,inet_ntop(hptr-h_addrtype,*pptr,str,sizeof(str)));}break;}default:{LOG(unknown h_addrtype:%d ,hptr-h_addrtype);break;}}LOG(test gethostbyname finish--);}voidtest_getaddrinfo(constchar*p_hostname){LOG(test getaddrinfo begin--);intresult_code0;structaddrinfohints,*addr_list,*cur;memset(hints,0,sizeof(hints));hints.ai_familyAF_UNSPEC;hints.ai_socktype0;// SOCK_STREAM OR SOCK_DGRAMhints.ai_protocol0;// IPPROTO_TCP OR IPPROTO_UDPhints.ai_flags0;if((result_codegetaddrinfo(p_hostname,NULL,hints,addr_list))!0){LOG(getaddrinfo error.result:%d error:%s ,result_code,gai_strerror(result_code));return;}LOG(addr_list:);for(curaddr_list;cur!NULL;curcur-ai_next){LOG();LOG( ai_flags:%d ,cur-ai_flags);LOG( ai_family:%d ,cur-ai_family);LOG( ai_socktype:%d ,cur-ai_socktype);LOG( ai_protocol:%d ,cur-ai_protocol);LOG( ai_addrlen:%d ,cur-ai_addrlen);structsockaddr_in*addr(structsockaddr_in*)cur-ai_addr;charstr[INET_ADDRSTRLEN]{0};LOG( ai_addr:%s ,inet_ntop(cur-ai_family,addr-sin_addr,str,sizeof(str)));LOG( ai_canonname:%s ,cur-ai_canonname);LOG();}freeaddrinfo(addr_list);LOG(test getaddrinfo finish--);}voidtest_dns(constchar*p_hostname){LOG(test hostname:%s ,p_hostname);test_gethostbyname(p_hostname);test_getaddrinfo(p_hostname);}intmain(intargc,char*argv[]){test_dns(argv[1]);return0;}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ax:Kubernetes之上面向智能体的声明式编排层 2026/9/28 21:50:28

ax:Kubernetes之上面向智能体的声明式编排层

1. 项目概述:从“ax”这个极简标题看智能体编排的底层演进逻辑你最近在技术社区、开源项目列表甚至云厂商白皮书中频繁看到一个词——“ax”。它不像Kubernetes那样有明确的logo和文档首页,也不像RAG那样自带功能定义,但它正以一种近乎“空气…

阅读更多 →
从十万星项目拆解AI Agent的工程化核心 2026/9/28 21:49:55

从十万星项目拆解AI Agent的工程化核心

1. 从十万星项目反推:AI Agent 的工程实质这两年 AI Agent 的火爆程度不用我多说了,GitHub 上动不动就冒出一个几万星的项目,从 AutoGPT 到 MetaGPT,再到各类 Memory 层的中间件,代码仓库从零到十万星可能只需要几个月…

阅读更多 →
harness-sdk 实战指南:从初始化到生产加固的完整经验 2026/9/28 21:49:55

harness-sdk 实战指南:从初始化到生产加固的完整经验

第一次在内部会议里听到 harness-sdk 的时候,我脑子里蹦出来的问题是:这到底是一个库,还是一个平台?后来查资料才搞明白,所谓 harness-sdk,是 Harness 软件交付平台面向开发者的官方开发工具包。它不是为了…

阅读更多 →
ax:面向智能体的Kubernetes语义调度抽象层 2026/9/28 21:49:27

ax:面向智能体的Kubernetes语义调度抽象层

1. “ax”不是缩写,而是一个正在成型的系统级抽象层最近在多个技术社区和开源项目讨论中反复看到“ax”这个词——它既不像传统Linux命令那样是某个工具的简写,也不像Kubernetes里的kubectl那样有明确的全称。我最初以为是拼写错误,直到在Kub…

阅读更多 →
LinuxPTP硬件时间戳配置深度指南:网卡、内核与PHY协同调优 2026/9/28 21:48:21

LinuxPTP硬件时间戳配置深度指南:网卡、内核与PHY协同调优

1. 为什么“5分钟搞定”是个误导,但这个配置真值得你花30分钟吃透LinuxPTP、ptp4l、软硬件时间戳——这几个词最近在工业自动化、金融高频交易、5G前传和车载以太网调试场景里出现频率越来越高。我第一次在客户现场看到他们用ptp4l同步PLC和视觉相机时,设…

阅读更多 →
Superpowers:给AI编程代理装上职业素养外挂的技能扩展包 2026/9/28 21:48:00

Superpowers:给AI编程代理装上职业素养外挂的技能扩展包

最近在折腾AI编程辅助工具的路上,我又发现了一个值得好好聊聊的项目:superpowers。如果你已经在用Claude Code、Codex CLI或者Worbuddy这类大模型编程代理,并且觉得"聊天式写代码"已经不够用了,那这个项目大概率能帮到你…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉