Linux网络编程C语言域名解析
2021/12/5 7:17:42
本文主要是介绍Linux网络编程C语言域名解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
视频连接
head
<iframe frameborder="no" height="600" scrolling="no" src="//player.bilibili.com/player.html?aid=209596352&bvid=BV13h411x7j6&cid=454622332&page=1" width="95%"></iframe>
end
/******* 域名解析 ************************** * 函数名:struct hostent *gethostbyname(const char *name); * 功能:域名解析 * 参数: * const char *name:域名或者ip * 返回值:struct hostent * * 成功:返回数据结构体 * 失败:NULL * ***************************************/ /********释放解析后的数据空间****************** * 函数名:void endhostent(void); * 功能:释放gethostbyname函数申请的空间 * 参数:无 * 返回值:无 * ****************************************/ #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { if (argc != 3) { printf("参数错误:./程序名称 ip地址或者域名 端口号\n"); return 0; } for (int i = 0; i < argc; i++) { printf("参数[%d] = %s\n", i, argv[i]); } printf("打印解析数据:\n"); struct hostent *hs = gethostbyname(argv[1]); if (hs == NULL) { perror("获取失败:"); exit(0); } char *ip = NULL; //将网络大端字节序的ip转为字符点分形式 ip = inet_ntoa(*(struct in_addr *)hs->h_addr_list[0]); //输出ip地址 printf("ip地址:%s\n", ip); //释放我转换的数据信息 endhostent(); return 0; } // struct hostent //只支持IPv4 // { // char *h_name; /* 主机正式名称 */ // char **h_aliases; /* 别名列表 */ // int h_addrtype; /* 主机地址类型 */ // int h_length; /* 地址的长度 */ // char **h_addr_list; /* 地址列表 */ // } //#define h_addr h_addr_list[0] /* 为了向后兼容 */
这篇关于Linux网络编程C语言域名解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法