11

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

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

有什么方法可以nslookup host serverC#不使用一些繁重的第三方库的情况下执行?

4

3 回答 3

12

问题解决了!

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

...
于 2011-03-31T17:48:10.890 回答
1

我不久前研究过这个。这在标准类库中是不可能的,因此您将不得不使用外部组件来正确执行此操作。

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

于 2011-03-29T07:39:47.877 回答
0

我不确定如何直接使用框架来执行此操作,因为我从来不需要使用与本地计算机配置中指定的 DNS 服务器不同的 DNS 服务器。但是你可能想试试这个库。我从未使用过它,但据我所知,它允许您指定 DNS 服务器以用于解析您传递的主机名。

于 2011-03-29T06:11:04.957 回答