关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>服务器>>Dns服务器>>正文|c#网络编程之------------DNS编程

c#网络编程之------------DNS编程

[ 来路:21kn.com    时间:2007-7-11 15:19:20    点击: ]

 

System.Net名称空间包含了DNS类,它可以提供了编写DNS所需要的函数。下面讲解DNS类的一些方法以及在C#中如何利用该类编写程序。

一、    同步方法

DNS类中定义了四个同步方法:GetHostName()GetHostByName()GetHostByAddress()Resolve()。下面分别讲解。

1public static string GetHostName();

功能:获取本地计算机的主机名。

返回值:字符串,包含本地计算机的 DNS 主机名。

2、public static IPHostEntry GetHostByName(string hostName)

功能:获取指定 DNS 主机名的 DNS 信息。

参数:包含主机的 DNS 名的字符串

using System;

using System.Net;

class GetDNSHostInfo

{

  public static void Main(string[] argv)

  {

   if (argv.Length != 1)

   {

    Console.WriteLine("Usage: GetDNSHostInfo hostname");

    return;

   }

   IPHostEntry results = Dns.GetHostByName(argv[0]);

   Console.WriteLine("Host name: {0}",results.HostName);

   foreach(string alias in results.Aliases)

   {

     Console.WriteLine("Alias: {0}", alias);

   }

   foreach(IPAddress address in results.AddressList)

   {

     Console.WriteLine("Address: {0}", address.ToString());

   }

  }

}

注:IPHostEntry(为 Internet 主机地址信息提供容器类)属性介绍:

AddressList:获取或设置与主机关联的 IP 地址列表。

Aliases:获取或设置与主机关联的别名列表。

HostName:获取或设置主机的 DNS 名称。

3GetHostByAddress()

功能:获取 IP 地址的 DNS 主机信息。

public static IPHostEntry GetHostByAddress(IPAddress);

public static IPHostEntry GetHostByAddress(string);

using System;

using System.Net;

class GetDNSAddressInfo

{

  public static void Main(string)[] argv)

  {

   if (argv.Length != 1)

   {

     Console.WriteLine("Usage: GetDNSAddressInfo address");

     return;

   }

   IPAddress test = IPAddress.Parse(argv[0]);

   IPHostEntry iphe = Dns.GetHostByAddress(test);

   Console.WriteLine("Information for {0}", test.ToString());

   Console.WriteLine("Host name: {0}", iphe.HostName);

   foreach(string alias in iphe.Aliases)

   {

     Console.WriteLine("Alias: {0}", alias);

   }

   foreach(IPAddress address in iphe.AddressList)

   {

     Console.WriteLine("Address: {0}", address.ToString());

   }

  }

}

注:IPAddress,提供网际协议 (IP) 地址。

 

4public static IPHostEntry Resolve(string hostName)

功能:将 DNS 主机名或 IP 地址解析为 IPHostEntry 实例。

参数:DNS 样式的主机名或 IP 地址。

备注:Resolve 方法在 DNS 服务器中查询与主机名或 IP 地址相关联的 IP 地址。当 hostName 是 DNS 样式的主机名并且与多个 IP 地址关联时,仅返回解析为该主机名的第一个 IP 地址。

using System;

using System.Net;

class GetResolveInfo

{

  public static void Main(string[] argv)

  {

   if (argv.Length != 1)

   {

     Console.WriteLine("Usage: GetResolveInfo address");

     return;

   }

   IPHostEntry iphe = Dns.Resolve(argv[0]);

   Console.WriteLine("Information for {0}", argv[0]);

   Console.WriteLine("Host name: {0}", iphe.HostName);

   foreach(string alias in iphe.Aliases)

   {

     Console.WriteLine("Alias: {0}", alias);

   }

   foreach(IPAddress address in iphe.AddressList)

   {

     Console.WriteLine("Address: {0}",address.ToString());

   }

  }

}

 

二、     异步方法

DNS中定义了四个异步方法: BeginGetHostByName()BeginResolve()EndGetHostByName()EndResolve()

使用范例:

using System;

using System.Drawing;

using System.Net;

using System.Text;

using System.Windows.Forms;

class AsyncResolve  Form:

{

  TextBox address;

  ListBox results;

  private AsyncCallback OnResolved;

  public AsyncResolve()

  {

   Text = "DNS Address Resolver";

   Size = new Size(400,380);

   OnResolved = new AsyncCallback(Resolved);

   Label label1 = new Label();

   label1.Parent = this;

   label1.Text = "Enter address to resolve:";

   label1.AutoSize = true;

   label1.Location = new Point(10, 10);

   address = new TextBox();

   address.Parent = this;

   address.Size = new Size(200, 2 * Font.Height);

   address.Location = new Point(10, 35);

   results = new ListBox();

   results.Parent = this;

   results.Location = new Point(10, 65);

   results.Size = new Size(350, 20 * Font.Height);

   Button checkit = new Button();

   checkit.Parent = this;

   checkit.Text = "Resolve";

   checkit.Location = new Point(235,32);

   checkit.Size = new Size(7 * Font.Height, 2 * Font.Height);

   checkit.Click += new EventHandler(ButtonResolveOnClick);

  }

  void ButtonResolveOnClick(object obj, EventArgs ea)

  {

   results.Items.Clear();

   string addr = address.Text;

   Object state = new Object();

   Dns.BeginResolve(addr, OnResolved, state);

  }

  private void Resolved(IAsyncResult ar)

  {

   string buffer;

   IPHostEntry iphe = Dns.EndResolve(ar);

   buffer = "Host name: " + iphe.HostName;

   results.Items.Add(buffer);

   foreach(string alias in iphe.Aliases)

   {

     buffer = "Alias: " + alias;

     results.Items.Add(buffer);

   }

   foreach(IPAddress addrs in iphe.AddressList)

   {

     buffer = "Address: " + addrs.ToString();

     results.Items.Add(buffer);

   }

  }

  public static void Main()

  {

   Application.Run(new AsyncResolve());

  }

}

 


::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:别把网站搬错家---解析网络通与动态DNS  下一篇:全球DNS服务器更新间隔将缩短为几秒

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

Win 2000中DNS服务器的设置

::视频教程::

 

Photoshop Dreamweaver
Flash MX Fireworks
Office AutoCAD
FrontPage CORELDRAW
用Dreamweaver开发ASP—建立
用Dreamweaver开发ASP—建立
用Dreamweaver开发ASP—建立
用Dreamweaver开发ASP—高级
用Dreamweaver开发ASP—限制
用Dreamweaver开发ASP—删除
用Dreamweaver开发ASP—修改
用Dreamweaver开发ASP—显示
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号