linux教程之Linux下复杂的DNS实例一则
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup标题:LinuxDNSClient
请求:案例摹拟一个DNS客户端程序,依据指定的DNS服务器,对域名实行正向、逆向剖析。
成绩:今朝只能用体系默许DNS服务器,没法逆向剖析外网IP。
利用办法:
编译:$gcc-odnsdns.c
运转:$./dnswww.avnads.cn
$./dns192.168.0.8(我的内网IP)
程序:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
intmain(intargc,char*argv[])
{
structsockaddr_inaddr;
structhostent*host;
char**alias;
if(argc!=2)
{
fprintf(stderr,"Usage:%shostname|ip..
a",argv);
exit(1);
}
/*这里我们假定是IP,经由过程IP取得主机信息*/
if(inet_aton(argv,&(addr.sin_addr))!=0)
{
host=gethostbyaddr((char*)&(addr.sin_addr),4,AF_INET);
printf("AddressinformationofIp%s
",argv);
}
else
{
/*不然用户应当输出的是域名,经由过程域名找主机信息*/
host=gethostbyname(argv);
printf("Addressinformationofhost%s
",argv);
}
if(host==NULL)
{
/*都不是,算了不找了*/
printf("NoInformationfound");
exit(1);
}
/*打印主机正式称号*/
printf("Officialhostname:
%s
",host->h_name);
/*打印主机其他称号*/
printf("Namealiases:
");
for(alias=host->h_aliases;*alias!=NULL;alias++)
printf("%s
",*alias);
/*打印主机系列IP*/
printf("
Ipaddress:
");
for(alias=host->h_addr_list;*alias!=NULL;alias++)
printf("%s
",inet_ntoa(*(structin_addr*)(*alias)));
}
</p>
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。 了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。 如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。 为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。? Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。 为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。 这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。 Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
页:
[1]