You don't say exactly what you want to be able to do. However there are a one or two dig
type C# implementations such as:
DNS.NET Resolver (C#) - CodeProject
I've used this one in the past and it works pretty well.
Update:
You already have this available. There's plenty of free DNS services such as Google or OpenDNS you can use as nameservers.
Using .NET's built in capabilities you can use the System.Net
namespace and the Dns
class. There's a couple of static methods you could use:
IPHostEntry GetHostEntry(string hostNameOrAddress)
IPAddress[] GetHostAddresses(string hostNameOrAddress)
The above methods will query the DNS servers as specified in the computer's own network settings.
If you want to specify your own resolver then use the Dig tool I mentioned above. The output goes straight to the console but you could modify to parse the results into return values.
Adding a reference to the project I was able to do this:
Dig dig = new Dig();
dig.DnsResolver = new Resolver("8.8.8.8");
dig.DigIt("stackoverflow.com");
The results returned look like:
; <<>> Dig.Net 0.0.1 <<>> @8.8.8.8 A stackoverflow.com.net
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53737
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;stackoverflow.com.net. IN A
;; ANSWER SECTION:
stackoverflow.com.net. 1800 IN A 74.207.240.60
stackoverflow.com.net. 3600 IN A 203.169.164.119
stackoverflow.com.net. 3600 IN A 97.107.142.101
stackoverflow.com.net. 1800 IN A 69.164.199.155
stackoverflow.com.net. 43200 IN A 74.207.231.120
stackoverflow.com.net. 43200 IN A 109.74.195.184
;; Query time: 216 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Oct 04 17:11:48 2010
;; MSG SIZE rcvd: 135
You don't need a third party service to be able to do this.