我的C#
服务需要定期轮询nslookup host server
。目前它产生了一个执行批处理脚本的Process
。由于性能原因,我正在考虑使用API
进行检查。但问题是,例如,使用System.Net.Dns.GetHostAddresses
我只能模拟nslookup host
检查,而不是nslookup host server
(没有秒参数)。
我看过一堆类似的SO问题,但似乎没有一个能解决我的问题。
有没有办法在nslookup host server
中执行C#
而不使用一些重型的第三方库?
答案 0 :(得分: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);
...
答案 1 :(得分:1)
我一会儿看了这个。它在标准类库中是不可能的,因此您将不得不使用外部组件来正确执行此操作。
您可以选择多种免费和付费方式。我的实现基于a posting on CodeProject,效果很好。 DNS Client Library for .NET(也被kprobst提到)在我完成后被释放,或者我最初会使用这个。
答案 2 :(得分:0)
我不确定如何直接使用框架,因为我从来不需要使用与本地计算机配置中指定的DNS服务器不同的DNS服务器。但您可能想尝试this库。我从来没有使用它,但据我所知,它将允许您指定一个DNS服务器用于解析您传递的主机名。