How to perform “nslookup host server”

谁说我不能喝 提交于 2019-12-17 07:49:43

问题


My C# service needs to periodically poll nslookup host server. Currently it spawns a Process that executes batch script. Due to performance reason I'm considering to do this check using some API. But the problem is, that using, for example, System.Net.Dns.GetHostAddresses I can only emulate nslookup host check, but not nslookup host server (without seconds param).

I've looked at bunch of similar SO questions, but none of them seem to solve my issue.

Are there any way to perform nslookup host server in C# without using some heavy third-patry library?


回答1:


The problem was solved!

http://msdn.microsoft.com/en-us/library/ms682016(VS.85).aspx

See "Great Example here" section

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

...



回答2:


I looked into this a while back. It is not possible in the standard class libraries, so you are going to have to use an external component to do this properly.

There are a number of free and paid choices available to you. My implementation was based around a posting on CodeProject, which worked quite well. DNS Client Library for .NET (also mentioned by kprobst) was released after I finished mine, or I would've used this one initially.




回答3:


I'm not sure how to do this using the framework directly because I've never needed to use a DNS server different than the one specified in the local machine configuration. But you might want to give this library a try. I've never used it but as far as I can tell it will allow you to specify a DNS server to use in resolving the host name you pass.



来源:https://stackoverflow.com/questions/5468348/how-to-perform-nslookup-host-server

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!