设计程序实现解析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;

}

结果


image

image



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。