当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux下简单的DNS实例一则

Linux服务器
中小企业服务器配置-邮件服务器(1)
中小企业服务器配置-邮件服务器(2)
典型WEB服务器Apache高级设置指南
从HTTP服务器状态代码分析
基于反向代理的Web缓存加速现代理服务器
在ApacheHTTPD服务器中使用DSO完全分析
组网不求人!搭建简易Linux局网服务器
基于NUMA架构的高性能服务器技术(1)
基于NUMA架构的高性能服务器技术(2)
复制另一台Linux服务器及相关问题
Linux服务器之间怎么样SSH不需密码
Rsync在服务器间镜像或者备份目录
服务器诊所:鲜为人知但很有用的观念
服务器诊所:并不是仅仅就是线程化而已
服务器诊所:PDF自动生成专业质量输出
用低代价的服务器过程将文档处理自动化
设置一个企业级的LinuxPOP3服务器
WEB服务器Apache编译指南及高级技巧
给Qmail邮件服务器加个病毒防火墙
LinuxCVS服务器与WinCVS的配置与使用

Linux服务器 中的 Linux下简单的DNS实例一则


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 72 ::
收藏到网摘: n/a

  题目:Linux DNS Client

  要求:案例模拟一个DNS客户端程序,根据指定的DNS服务器,对域名实施正向、逆向解析。
  问题:目前只能用系统默认DNS服务器,无法逆向解析外网IP。
  使用方法:

  编译:$gcc -o dns dns.c

  运行:$./dns www.avnads.cn

  $./dns 192.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>
  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);
  }
  /* 这里我们假设是IP,通过IP获得主机信息*/
  if(inet_aton(argv[1],&(addr.sin_addr))!=0)
  {
  host=gethostbyaddr((char *)&(addr.sin_addr),4,AF_INET);
  printf("Address information of Ip %s\n",argv[1]);
  }
  else
  {
  /* 否则用户应该输入的是域名,通过域名找主机信息*/
  host=gethostbyname(argv[1]);
  printf("Address information of host %s\n",argv[1]);
  }
  if(host==NULL)
  {
  /* 都不是,算了不找了*/
  printf("No Information found");
  exit(1);
  }
  /*打印主机正式名称*/
  printf("Official host name:\n%s\n\n",host->h_name);
  /*打印主机其他名称*/
  printf("Name aliases:\n");
  for(alias=host->h_aliases;*alias!=NULL;alias++)
  printf("%s\n",*alias);
  /*打印主机系列IP*/
  printf("\nIp address:\n");
  for(alias=host->h_addr_list;*alias!=NULL;alias++)
  printf("%s\n",inet_ntoa(*(struct in_addr *)(*alias)));
  }