目錄題目分析代碼結果 題目 設計程式實現解析www.baidu.com的功能變數名稱,把獲取到的百度的IP地址全部輸出到終端並驗證是否正確。 分析 1.通過目標功能變數名稱獲取目標IP地址對應的網路位元組序(需強轉為對應的類型),使用gethostbyname()函數; 2.把獲取的網路位元組序轉換為點分十進位的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;
}