设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确
cnblogs 2024-06-10 12:45:00 阅读 65
目录
- 题目
- 分析
- 代码
- 结果
题目
设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确。
分析
1.通过目标域名获取目标IP地址对应的网络字节序(需强转为对应的类型),使用gethostbyname()函数;
2.把获取的网络字节序转换为点分十进制的IP地址(需强转为对应的类型),以便查询。
代码
/***********************************************************************************
*
*file name:udp_ntoh.c
*author : cnzycwp@126.com
*date : 2024/06/04
*function : 该案例是实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到
* 终端并验证是否正确
* note : None
* version :
*
*CopyRight (c) 2023-2024 cnzycwp@126.com All Right Reseverd
*
* **********************************************************************************/
/************************************头文件*****************************************/
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/***********************************************************************************/
int main()
{
int i = 0; //定义一个变量,表示IP地址下标
uint32_t ip;
char *host_ip;
//1. 获取服务器的IP地址
struct hostent *hostent = gethostbyname("www.baidu.com");
//2.定义结构体获取IP地址
struct in_addr ip_addr;
//3.当结构题hosten->h_addr_list为空时,退出循环
while (hostent->h_addr_list[i] != NULL)
{
//4. 获取IP地址对应的网络字节序
ip = *(uint32_t*)hostent->h_addr_list[i];
//5. 网络字节序转换为点分十进制IP地址 char *inet_ntoa(struct in_addr in);
ip_addr = *(struct in_addr*)&ip;
host_ip = inet_ntoa(ip_addr);
//6. 打印结果
printf("IP: %s\n", host_ip);
i++;
}
return 0;
}
结果
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。