如何执行“nslookup主机服务器”

我的C#服务需要定期轮询nslookup host server 。 目前,它产生了一个执行批处理脚本的Process 。 由于性能原因,我正在考虑使用某些API进行此检查。 但问题是,使用例如System.Net.Dns.GetHostAddresses我只能模拟nslookup host检查,但不能模拟nslookup host server (没有秒参数)。

我看过一堆类似的SO问题,但似乎都没有解决我的问题。

有没有办法在C#执行nslookup host server而不使用一些繁重的第三个patry库?

问题解决了!

http://msdn.microsoft.com/en-us/library/ms682016(VS.85).aspx

请参阅“ 此处的优秀示例 ”部分

 [DllImport("dnsapi", EntryPoint="DnsQuery_W", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)] private static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)]ref string pszName, QueryTypes wType, QueryOptions options, int aipServers, ref IntPtr ppQueryResults, int pReserved); [DllImport("dnsapi", CharSet=CharSet.Auto, SetLastError=true)] private static extern void DnsRecordListFree(IntPtr pRecordList, int FreeType); ... 

我一会儿看了这个。 它在标准类库中是不可能的,因此您将不得不使用外部组件来正确执行此操作。

您可以选择多种免费和付费方式。 我的实现是基于CodeProject的一个post ,它运作得很好。 用于.NET的DNS客户端库 (也由kprobst提到)在我完成后发布,或者我最初会使用这个。

我不确定如何直接使用框架,因为我从来不需要使用不同于本地机器配置中指定的DNS服务器。 但是你可能想试试这个库。 我从来没有使用它,但据我所知,它将允许您指定一个DNS服务器用于解析您传递的主机名。