C#實現DNS解析服務


利用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM