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


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

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

有没有办法执行 nslookup host server 在 C# 没有使用一些沉重的第三方库?


3834
2018-03-29 05:40


起源



答案:


问题解决了!

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);

...

12
2018-03-31 17:48





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

您可以选择多种免费和付费方式。我的实施基于 在CodeProject上发布,效果很好。 适用于.NET的DNS客户端库 (也是kprobst提到的)在我完成之后被释放,或者我最初会使用这个。


1
2018-03-29 07:39





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


0
2018-03-29 06:11