2009-10-14 4 views
7

Từ ứng dụng .NET, tôi cần truy vấn máy chủ DNS cụ thể để giải quyết tên miền (máy chủ DNS không được định nghĩa trong cấu hình mạng Windows).Truy vấn DNS bằng cách sử dụng máy chủ DNS cụ thể trong .NET

Tôi biết điều này là không thể sử dụng các lớp .NET Framework chuẩn (See this other question). Câu hỏi của tôi là lựa chọn của tôi là gì. Có một thư viện mã nguồn mở trên CodePlex (DnDns) làm điều đó, nhưng nó đã không được cập nhật trong một thời gian dài, và ứng dụng của tôi là nhiệm vụ quan trọng để độ tin cậy là vô cùng quan trọng.

Mọi đề xuất?

+4

Để công bằng, không giống như giao thức DNS đã thay đổi nhiều. –

Trả lời

1

Tôi nghĩ tùy chọn tốt nhất là nghiên cứu giao thức DNS (khá dễ dàng) và tự thực hiện nó bằng cách sử dụng ổ cắm udp .net.

DNS thực sự là một giao thức dễ hiểu và dễ triển khai.

Hơn nữa, bạn có thể sử dụng sourcode từ DnDNS để xem sản lượng đánh bắt trong chương trình/giao thức

1

Bạn cũng có thể có một cái nhìn tại opendns.net và kiểm tra xem nó phù hợp với ứng dụng của bạn

1

tôi có nhiệm vụ tương tự và giải pháp của tôi để thực hiện một lệnh trong hệ điều hành với quá trình và nhận được đầu ra (nó hoạt động dành cho Windows) /VB.NET/ là:

Sub Main() 
    Dim oProcess As New Process 
    Dim oStartInfo As New ProcessStartInfo("nslookup", " [name] [dns server's ip]") 
    oStartInfo.UseShellExecute = False 
    oStartInfo.RedirectStandardOutput = True 
    oProcess.StartInfo = oStartInfo 
    oProcess.Start() 

    Dim sOutput As String 
    Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput 
     sOutput = oStreamReader.ReadToEnd() 
    End Using 
    Console.WriteLine(sOutput) 
End Sub 
0

DNSJava là một dự án đang hoạt động là triển khai DNS nguồn mở trong JAVA và khá phong phú về mặt tính năng. Tôi đã có thể sử dụng dnsjava sử dụng ikvmc đầu tiên biên dịch jar vào một DLL:

c: \ Temp> ikvmc -target: thư viện dnsjava-2.1.5.jar

IKVM.NET Compiler phiên bản 7.2 .4630.5 Bản quyền (C) 2002-2012 Jeroen Frijters

http://www.ikvm.net/

lưu ý IKVMC0002: tập tin đầu ra là "dnsjava-2.1.5.dll"

Xin lưu ý rằng bạn sẽ phải tham khảo IKVM.OpenJDK.Core cũng như DLL ở trên để mã bên dưới hoạt động. Các mẫu dưới đây truy vấn cho một bản ghi A với một máy chủ tên cụ thể:

var lookup = new Lookup("google.com", org.xbill.DNS.Type.A, DClass.IN); 
lookup.setResolver(new SimpleResolver("192.168.1.1")); 
lookup.run(); 
lookup.getAnswers().ToList().ForEach(x => Console.WriteLine(x.rdataToString())); 

Output

74.125.236.164 
74.125.236.165 
74.125.236.162 
74.125.236.174 
74.125.236.160 
74.125.236.168 
74.125.236.169 
74.125.236.161 
74.125.236.166 
74.125.236.167 
74.125.236.163 
1

Mặc dù đây là một câu hỏi khá cũ. Vẫn còn các thư viện mới được phát triển để thực hiện điều này vì .NET Framework vẫn không hỗ trợ cho việc này;)

Hãy xem http://dnsclient.michaco.net. Nó rất dễ sử dụng, hiệu suất cao và open source!

Và nó hoạt động.NET Core nền tảng chéo, quá!