à partir d'une application .NET, je dois interroger un serveur DNS spécifique pour résoudre un nom de domaine (le serveur DNS n'est pas défini dans la configuration du réseau Windows). P>
Je sais que cela n'est pas possible à l'aide de classes standard .NET Framework ( Voir cette autre question ). Ma question est de savoir ce que mes options sont. Il y a une bibliothèque open source sur CodePlex ( DNDNS ) qui fait cela, mais il n'a pas été mis à jour dans un Long Time, et ma demande est essentielle de la mission, la fiabilité est extrêmement importante. P>
Toute suggestion? P>
6 Réponses :
Je pense que la meilleure option est d'étudier le protocole DNS (qui est assez facile) et de la mettre en œuvre vous-même à l'aide de sockets UDP. p>
DNS est vraiment un protocole facile à comprendre et à mettre en œuvre. P>
De plus, vous pouvez utiliser le code source de DNDNS pour voir les captures dans le programme / protocole P>
Vous pouvez également consulter OPENDNS.NET et vérifiez s'il correspond à votre application < P> Voici un exemple de code pour vous aider à démarrer: p>
Vous pouvez le faire avec «Client DNS de JH pour le logiciel pour .NET». Voir le deuxième échantillon de code à http://www.simpledns.com/dns-client- lib.aspx p>
J'ai eu la même tâche et ma solution pour exécuter une commande dans OS avec le processus et obtenir la sortie (elle fonctionne pour Windows) /vb.net/ est la suivante:
Sub Main() Dim oProcess As New Process Dim oStartInfo As New ProcessStartInfo("nslookup", " [name] [dns server's ip]") oStartInfo.UseShellExecute = False oStartInfo.RedirectStandardOutput = True oProcess.StartInfo = oStartInfo oProcess.Start() Dim sOutput As String Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput sOutput = oStreamReader.ReadToEnd() End Using Console.WriteLine(sOutput) End Sub
dnsjava est un projet actif qui est une implémentation open source de DNS en Java et est assez riche en Conditions de définition définie. J'ai pu utiliser Dnsjava en utilisant ikvmc pour compiler pour la première fois le pot à une DLL:
C: \ Temp> IKVMC -TARGET: Bibliothèque DNSJAVA-2.1.5.JAR P>
Compilateur IKVM.net Version 7.2.4630.5 Copyright (c) 2002-2012 Jeroen Frijters p>
Remarque IKVMC0002: fichier de sortie est "Dnsjava-2.1.5.dll" p> BlockQuote>
Veuillez noter que vous devrez référencer ikvm.openjdk.core ainsi que la DLL ci-dessus pour le code ci-dessous pour travailler. Sample ci-dessous requête pour un enregistrement sur un serveur de nom spécifique: P>
xxx pré> sortie p>
74.125.236.164 74.125.236.165 74.125.236.162 74.125.236.174 74.125.236.160 74.125.236.168 74.125.236.169 74.125.236.161 74.125.236.166 74.125.236.167 74.125.236.163
Bien que ce soit une très vieille question. Il existe encore de nouvelles bibliothèques développées pour le faire car le framework .NET n'a toujours pas de support pour cela;) p>
regarder http://dnsclient.michaaco.net . Il est facile à utiliser, performant et Open Source ! p>
Et cela fonctionne également sur la plate-forme de Core Core .NET! p>
Pour être juste, ce n'est pas comme si le protocole DNS a changé beaucoup non plus.