https网络编程——DNS域名解析获取IP地址

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https网络编程——DNS域名解析获取IP地址相关的知识,希望对你有一定的参考价值。

参考: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);

3、测试

以上是关于https网络编程——DNS域名解析获取IP地址的主要内容,如果未能解决你的问题,请参考以下文章

DNS域名解析中A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR各项记录的作用

DNS域名解析服务

编程黑科技gethostbyname()函数:通过域名获取IP地址!

网络 DNS域名系统ICMP协议NAT/NAPT服务代理服务

讲清楚,说明白!DNS域名解析服务实现原理

DNS域名解析服务