Explicamos cómo realizar una aplicación en Visual Studio .Net C# (C Sharp) que obtiene tanto el nombre de red DNS del equipo (hostname) como el FQDN (Fully Qualified Domain Name o nombre de dominio completo). Dicho nombre incluye el nombre del equipo y el nombre del dominio al que está agregado.
- Requisitos para obtener el nombre de red con Visual Stuio .Net C#.
- Crear proyecto C# y obtener el nombre de red hostname y el FQDN en Visual Studio .Net.
- Código fuente completo de la aplicación que obtiene el nombre FQDN de un equipo Windows con Visual Studio .Net C#.
- Ejecución de la aplicación de consola para depurar y comprobar que funciona.
Requisitos para obtener el nombre de red con Visual Stuio .Net C#
Como es lógico necesitaremos disponer del IDE de desarrollo Visual Studio .Net. En el siguiente enlace explicamos cómo descargar e instalar la versión Community (gratuita):
Crear proyecto C# y obtener el nombre de red hostname y el FQDN en Visual Studio .Net
A continuación mostramos el código fuente completo de una aplicación de consola que obtiene el nombre de red (hostname) y el nombre de dominio completo (FQDN) del equipo actual donde se ejecuta la aplicación.
Abriremos Visual Studio .Net y crearemos un nuevo proyecto, de tipo «Aplicación de consola (.NET Framework)» para el lenguaje de programación C#:
Introduciremos el nombre del proyecto, en nuestro caso «ObtenerNombreRed» y la ubicación. Elegiremos la última versión de Framework y pulsaremos en «Crear»:
Añadiremos la siguiente clase al código, justo debajo de «namespace ObtenerNombreRed»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class ObtenerNombreDeRed { //Obtener el nombre de red DNS del equipo actual (hostname) //y el dominio (FQDN) public static string obtenerFQDN() { try { //Obtener nombre de red sin dominio String nombreDeRedSinDominio = Dns.GetHostName(); //Obtener nombre de red con dominio (Fully qualified hostname) String nombreDeRed = Dns.GetHostEntry(nombreDeRedSinDominio).HostName; return nombreDeRed; } catch (SocketException e) { Console.WriteLine("Error al obtener nombre de red del equipo"); Console.WriteLine(" Origen: " + e.Source); Console.WriteLine(" Error: " + e.Message); return ""; } catch (Exception e) { Console.WriteLine("Error al obtener nombre de red del equipo"); Console.WriteLine(" Origen: " + e.Source); Console.WriteLine(" Error: " + e.Message); return ""; } } } |
Añadiremos los siguientes using (al principio del código):
1 2 3 |
using System; using System.Net; using System.Net.Sockets; |
Y agregaremos el siguiente código para el método Main de la clase Program:
1 2 3 4 5 6 7 |
class Program { static void Main(string[] args) { Console.WriteLine(ObtenerNombreDeRed.obtenerFQDN()); } } |
Quedando:
Código fuente completo de la aplicación que obtiene el nombre FQDN de un equipo Windows con Visual Studio .Net C#
La aplicación completa con el código fuente en Microsoft Visual Studio Community 2019 C#, que obtiene el nombre completo del equipo (FQDN) y lo muestra por consola, está disponible en el siguiente enlace:
Y el listado del código fuente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
using System; using System.Net; using System.Net.Sockets; namespace ObtenerNombreRed { class ObtenerNombreDeRed { //Obtener el nombre de red DNS del equipo actual (hostname) //y el dominio (FQDN) public static string obtenerFQDN() { try { //Obtener nombre de red sin dominio String nombreDeRedSinDominio = Dns.GetHostName(); //Obtener nombre de red con dominio (Fully qualified hostname) String nombreDeRed = Dns.GetHostEntry(nombreDeRedSinDominio).HostName; return nombreDeRed; } catch (SocketException e) { Console.WriteLine("Error al obtener nombre de red del equipo"); Console.WriteLine(" Origen: " + e.Source); Console.WriteLine(" Error: " + e.Message); return ""; } catch (Exception e) { Console.WriteLine("Error al obtener nombre de red del equipo"); Console.WriteLine(" Origen: " + e.Source); Console.WriteLine(" Error: " + e.Message); return ""; } } } class Program { static void Main(string[] args) { Console.WriteLine(ObtenerNombreDeRed.obtenerFQDN()); } } } |
Ejecución de la aplicación de consola para depurar y comprobar que funciona
Si ejecutamos la aplicación de consola, pulsando en «Iniciar»:
Nos devolverá el nombre completo del equipo (hostname.nombre_de_dominio) en una ventana de consola. pero al ser una aplicación de consola, cuando se ejecute y finalice se cerrará la consola. Si queremos que se quede abierta a falta de pulsar una tecla (al menos mientras estamos depurándola), podremos añadir un «Console.ReadLine();«:
1 2 3 4 5 |
static void Main(string[] args) { Console.WriteLine(ObtenerNombreDeRed.obtenerFQDN()); Console.ReadLine(); } |
Ahora sí, al ejecutarla, mostrará el resultado y se quedará abierta a la espera de la pulsación de una tecla. en nuestro caso mostrará:
pcalonso.proyectoa.local
Siendo
- pcalonso: nombre de red DNS del equipo (hostname).
- proyectoa.local: nombre del dominio Active Directory de Windows al que está agregado.
Si el equipo no pertenece a un dominio Windows, la aplicación devolverá solo su nombre de red, en nuestro ejemplo devolvería únicamente «pcalonso».