参考:DNS域名解析
地址:https://qingmu.blog.csdn.net/article/details/115825036?spm=1001.2014.3001.5502
1、原理
我在在通过域名解析获取IP的过程中一般使用的是DNS域名解析。
DNS协议是一种应用层协议,他是基于UDP来实现的。
2、代码实现
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>extern int h_errno;int main(int argc, char **argv)
{char *ptr, **pptr;char str[INET_ADDRSTRLEN];struct hostent *hptr; //while (--argc> 0) {ptr = *++argv; //传入的域名if ( (hptr = gethostbyname (ptr) ) == NULL) //完成域名解析{printf("gethostbyname error for host: %s: %s",ptr, hstrerror (h_errno) );continue;}printf ("official hostname: %s\n", hptr->h_name);for (pptr=hptr->h_aliases; *pptr!= NULL; pptr++)printf ("\talias: %s\n", *pptr);switch (hptr->h_addrtype) {case AF_INET:pptr = hptr->h_addr_list;for ( ; *pptr != NULL; pptr++)printf ("\taddress: %s\n",inet_ntop (hptr->h_addrtype, *pptr, str, sizeof (str))); //hptr->h_addrtype我们获取的IP地址break;default:printf("unknown address type");break;}}exit(0);
}