【问题标题】:How to perform "nslookup host server"如何执行“nslookup 主机服务器”
【发布时间】:2011-07-25 00:16:23
【问题描述】:

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

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

有什么方法可以在不使用繁重的第三方库的情况下在C# 中执行nslookup host server

【问题讨论】:

    标签: c# api nslookup


    【解决方案1】:

    问题解决了!

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

    【讨论】:

    • 很遗憾,您发布的 msdn 网址上不再显示“此处的绝佳示例”部分。知道完成“nslookup 主机服务器”的任何其他方法吗?
    【解决方案2】:

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

    您可以选择多种免费和付费选择。我的实现基于a posting on CodeProject,效果很好。 DNS Client Library for .NET(也被 kprobst 提到)是在我完成我的之后发布的,或者我最初会使用这个。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-07-28
        • 2017-05-28
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 2014-04-08
        • 2015-08-07
        • 1970-01-01
        相关资源
        最近更新 更多