码迷,mamicode.com
首页 > Windows程序 > 详细

C#实现DNS解析服务

时间:2015-04-05 23:22:46      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

利用ARSoft.Tools.Net实现一个客户端DNS解析服务,通过这个工具,可看到当前客户端对某个域名的解析地址是否正确。

ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client、DNS Server接口。

使用该接口可轻松实现DNS客户请求端及服务器解析端。项目地址:http://arsofttoolsnet.codeplex.com/   或参考:http://i.isclab.org/?p=327

工具的主要代码:

 1         private void btnDNS_Click(object sender, EventArgs e)
 2         {
 3             int QUERY_TIMEOUT = 10000;
 4             string domain = txtDomain.Text;
 5             string dnsAddr = txtDNSAddr.Text;
 6             txtResult.Clear();
 7             btnDNS.Enabled = false;
 8             btnDNS.Text = "正在解析...";
 9             new Thread(() =>
10             {
11                 if (string.IsNullOrWhiteSpace(domain))
12                 {
13                     MessageBox.Show("待解析的域名不可为空");
14                     return;
15                 }
16                 if (string.IsNullOrWhiteSpace(dnsAddr))
17                 {
18                     MessageBox.Show("DNS地址不可为空");
19                     return;
20                 }
21                 //初始化DnsClient,第一个参数为DNS服务器的IP,第二个参数为超时时间
22                 //DnsClient dnsClient = new DnsClient(IPAddress.Parse("8.8.8.8"), QUERY_TIMEOUT);
23                 DnsClient dnsClient = new DnsClient(IPAddress.Parse(dnsAddr), QUERY_TIMEOUT);
24                 //解析域名。将域名请求发送至DNS服务器解析,第一个参数为需要解析的域名,第二个参数为解析类型, RecordType.A为IPV4类型
25                 //DnsMessage dnsMessage = dnsClient.Resolve("sso.zt-express.com", RecordType.A);
26                 DnsMessage dnsMessage = dnsClient.Resolve(domain, RecordType.A);
27                 //若返回结果为空,或者存在错误,则该请求失败。
28                 if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain))
29                 {
30                     // return null;
31                     //Console.WriteLine("没有解析成功");
32                     this.Invoke(new Action(() =>
33                     {
34                         txtResult.Text = "没有解析成功";
35                         btnDNS.Enabled = true;
36                         btnDNS.Text = "解析";
37 
38                     }));
39                 }
40                 else
41                 {
42                     //循环遍历返回结果,将返回的IPV4记录添加到结果集List中。
43                     foreach (DnsRecordBase dnsRecord in dnsMessage.AnswerRecords)
44                     {
45                         ARecord aRecord = dnsRecord as ARecord;
46                         if (aRecord != null)
47                         {
48                             //resultIpList.Add(aRecord.Address.ToString());
49                             //Console.WriteLine(aRecord.Address.ToString());
50                             this.Invoke(new Action(() =>
51                                     {
52                                     txtResult.AppendText(aRecord.Address.ToString() + "\r\n");
53                                 }));
54                         }
55                         else
56                         {
57                             continue;
58                         }
59                     }
60                     this.Invoke(new Action(() =>
61                     {
62                         btnDNS.Enabled = true;
63                         btnDNS.Text = "解析";
64                     }));
65 
66                 }
67 
68             }).Start();
69 
70         }

 

 工具下载地址:http://files.cnblogs.com/files/hnsongbiao/Release.rar

C#实现DNS解析服务

标签:

原文地址:http://www.cnblogs.com/hnsongbiao/p/4394933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!