dns.c

来自「linux网络程序设计 几个小程序以及编译命令」· C语言 代码 · 共 50 行

C
50
字号
#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
#include <netdb.h> 

int main(int argc ,char **argv) 
{ 
	struct sockaddr_in addr; 
    struct hostent *host; 
	char **alias; 
	if(argc<2) 
	{ 
		fprintf(stderr,"Usage:%s hostname|ip..\n\a",argv[0]); 
		exit(1); 
	} 
	argv++; 
	for(;*argv!=NULL;argv++) 
	{ 
		/* 这里我们假设是IP*/    
		if(inet_aton(*argv,&addr.sin_addr)!=0) 
		{ 
			host=gethostbyaddr((char   *)&addr.sin_addr,4,AF_INET);  
			printf("Address information of Ip %s\n",*argv);  
		}  
		else  
		{ 
			/* 域名*/ 
			host=gethostbyname(*argv); printf("Address information of host %s\n",*argv);  
		} 
		if(host==NULL) 
		{ 
			/* 找不到*/ 
			fprintf(stderr,"No address information of %s\n",*argv); 
			continue; 
		} 
		printf("Official host name %s\n",host->h_name); 
		printf("Name aliases:"); 
		for(alias=host->h_aliases;*alias!=NULL;alias++) 
			printf("%s ,",*alias); 
		printf("\nIp address:\n"); 
		for(alias=host->h_addr_list;*alias!=NULL;alias++) 
			printf("%s \n ,",inet_ntoa(*(struct in_addr *)(*alias))); 
	} 


return 0;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?