Question

Mon C# Le service doit être instruit périodiquement nslookup host server. Actuellement, il engendre un Process qui exécute le script de lots. Pour une raison de performance, j'envisage de faire ce chèque en utilisant certains API. Mais le problème est que l'utilisation, par exemple, System.Net.Dns.GetHostAddresses Je ne peux que imiter nslookup host Vérifiez, mais pas nslookup host server (sans secondes param).

J'ai regardé des questions similaires, mais aucun d'eux ne semble résoudre mon problème.

Y a-t-il un moyen de jouer nslookup host server dans C# Sans utiliser une bibliothèque de troisième patron lourde?

Était-ce utile?

La solution

Le problème a été résolu!

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

Voir "Excellent exemple ici" 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);

...

Autres conseils

J'ai regardé cela il y a quelque temps. Il n'est pas possible dans les bibliothèques de classe standard, vous devrez donc utiliser un composant externe pour le faire correctement.

Il existe un certain nombre de choix gratuits et payés à votre disposition. Ma mise en œuvre était basée autour Une publication sur CodeProject, ce qui a très bien fonctionné. Bibliothèque client DNS pour .net (également mentionné par KPROBST) a été publié après avoir terminé le mien, ou j'aurais utilisé celui-ci au départ.

Je ne sais pas comment procéder en utilisant directement le framework car je n'ai jamais eu besoin d'utiliser un serveur DNS différent de celui spécifié dans la configuration de la machine locale. Mais tu pourrais vouloir donner cette bibliothèque un essai. Je ne l'ai jamais utilisé mais pour autant que je sache, cela vous permettra de spécifier un serveur DNS à utiliser pour résoudre le nom d'hôte que vous passez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top