飘飘悠悠 发表于 2015-1-16 14:06:23

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命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。

愤怒的大鸟 发表于 2015-1-18 11:53:58

了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。

乐观 发表于 2015-1-23 10:20:40

如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。

精灵巫婆 发表于 2015-1-31 15:52:52

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?

透明 发表于 2015-2-6 21:30:28

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

再见西城 发表于 2015-2-18 21:37:42

为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。

兰色精灵 发表于 2015-3-6 11:06:40

这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

不帅 发表于 2015-3-13 01:07:08

Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
页: [1]
查看完整版本: linux教程之Linux下复杂的DNS实例一则