La clase DNS de .NET Framework


.NET Framework cuenta con la clase Dns que nor permite recuperar información acerca de un host específico del Sistema de nombres de dominio.

Para trabajar con la información de los DNS necesitaremos el espacio de nombres System.Net que proporciona una interfaz de programación sencilla de los protocolos de la red.

El espacio de nombres lo llamamos de la siguente manera:

using System;
using System.Net;

Obteniendo las IP de un dominio

Para obtener la lista de las direccines IP de un determinado dominio utilizamos el método GetHostAddresses.

IPAddress[] GetHostAddresses( string hostNameOrAddress );

Ejemplos

/* IP que utiliza Snippets-Tricks */
foreach( IPAddress lista in Dns.GetHostAddresses( "snippets-tricks.org" ) )
	Console.WriteLine( lista.ToString() );
70.32.94.48
/* Lista de las IP que utiliza Google */
foreach( IPAddress lista in Dns.GetHostAddresses( "google.com" ) )
	Console.WriteLine( lista.ToString() );
66.102.7.104
66.102.7.99

Obteniendo el Nombre del Servidor

Para obterner Nombre del Host se utiliza el método GetHostEntry.

IPHostEntry GetHostEntry( IPAddress address );
IPHostEntry GetHostEntry( string hostNameOrAddress );

Ejemplos

IPHostEntry dominio = Dns.GetHostEntry( "70.32.94.48" );
Console.WriteLine( dominio.HostName );
IPHostEntry dominio = Dns.GetHostEntry( "snippets-tricks.org" );
Console.WriteLine( dominio.HostName );

Ya sea con la IP o con el nombre de dominio, podemos obtener el nombre del host:

plus.snippets-tricks.org

GetHostEntry acepta como parámetro el objeto IPAddress. En este caso debemos especificar la dirección IP como un arregleo del tipo byte.

IPAddress address = new IPAddress ( new byte[] { 66, 102, 7 ,99 } );
IPHostEntry dominio = Dns.GetHostEntry( address );
Console.WriteLine( dominio.HostName );

Código de Ejemplo

using System;
using System.Net;

namespace Ejemplos {

	class DNS {

		public static void Main(string[] args) {

			/* Obteniendo las IP de un dominio */
			foreach( IPAddress lista in Dns.GetHostAddresses( "google.com" ) )
				Console.WriteLine( lista.ToString() );

			/* Obteniendo el Nombre del Servidor */
			IPAddress address = new IPAddress ( new byte[] { 66, 102, 7 ,99 } );
			IPHostEntry dominio = Dns.GetHostEntry( address );
			Console.WriteLine( dominio.HostName );
		}
	}
}
$ gmcs "/out:DNS.exe" "/r:System.dll" /t:exe "DNS.cs"
$ mono DNS.exe
66.102.7.104
66.102.7.99
lax04s01-in-f99.1e100.net

Posted in

Leave a Reply