设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确
题目
设计程序实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到终端并验证是否正确。
分析
1.通过目标域名获取目标IP地址对应的网络字节序(需强转为对应的类型),使用gethostbyname()函数;
2.把获取的网络字节序转换为点分十进制的IP地址(需强转为对应的类型),以便查询。
代码
/***********************************************************************************
*
* file name: udp_ntoh.c
* author : [email protected]
* date : 2024/06/04
* function : 该案例是实现解析www.baidu.com的域名,把获取到的百度的IP地址全部输出到
* 终端并验证是否正确
* note : None
* version :
*
* CopyRight (c) 2023-2024 [email protected] 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;
}