利用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
时间: 2024-11-25 07:05:39