Как выполнить «хост-сервер nslookup»

Мой C# -сервис должен периодически nslookup host server . В настоящее время он создает Process который выполняет пакетный скрипт. Из-за соображений производительности я собираюсь сделать эту проверку с помощью некоторого API . Но проблема в том, что, используя, например, System.Net.Dns.GetHostAddresses я могу только эмулировать проверку nslookup host , но не nslookup host server (без секундного параметра).

Я посмотрел на кучу похожих вопросов SO, но ни один из них, похоже, не решил мою проблему.

Есть ли способ выполнить nslookup host server на C# без использования какой-либо тяжелой библиотеки третьего мира?

    Проблема решена!

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

    Я посмотрел на это некоторое время назад. Это невозможно в стандартных библиотеках classов, поэтому вам придется использовать внешний компонент для этого.

    Есть ряд бесплатных и платных вариантов, доступных вам. Моя реализация была основана на публикации на CodeProject , которая работала достаточно хорошо. DNS-клиентская библиотека для .NET (также упоминаемая kprobst) была выпущена после того, как я закончил свою работу, или я бы использовал ее вначале.

    Я не уверен, как это сделать, используя фреймворк напрямую, потому что мне никогда не нужно было использовать DNS-сервер, отличный от того, который указан в конфигурации локального компьютера. Но вы можете попробовать эту библиотеку. Я никогда не использовал его, но, насколько я могу судить, он позволит вам указать DNS-сервер, который будет использоваться для разрешения имени хоста, которое вы передаете.

    Давайте будем гением компьютера.