时间:2023-02-18 20:28:01 | 来源:建站知识
时间:2023-02-18 20:28:01 来源:建站知识
一个域名可以解析出几个IP地址,例如在访问struct hostent *gethostbyname(const char *name);
函数的返回值为一个结构体指针,这个结构体的定义为:struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses */}#define h_addr h_addr_list[0] /* for backward compatibility */
结构体中的h_addr_list是一个数组,用于存放解析出的多个IP地址,但很少有程序员会去考虑多个IP地址的问题,通常直接使用宏h_addr来获取IP地址,也就是第一个IP地址。#include <stdio.h>#include <netdb.h>#include <arpa/inet.h>#include <netinet/in.h>int main(){ struct hostent *host; struct in_addr h_addr; if ((host = gethostbyname("www.163.com")) != NULL) { h_addr.s_addr = *((unsigned long *) host->h_addr); printf("%s/n", inet_ntoa(h_addr)); } return 0;}
关键词:访问,服务,对应,实际