1: using System;
2: using System.Net.NetworkInformation;
3:
4: public class InfoTarjetasRed
5: {
6: //Entrada a la aplicación de consola
7: public static void Main()
8: {
9: try
10: {
11: MuestraInfoTarjetasRed();
12: }
13: catch (Exception e)
14: {
15: string error = string.Format("---\nSe ha producido el siguiente error:\n{0}\n---", e.ToString());
16: Console.WriteLine(error);
17: }
18: finally
19: {
20: Console.Write("Pulsa cualquier tecla para continuar...");
21: Console.ReadKey();
22: }
23: }
24:
25: private static void MuestraInfoTarjetasRed()
26: {
27: //Obtengo el nombre del ordenador y el dominio actuales
28: IPGlobalProperties propsOrdenador = IPGlobalProperties.GetIPGlobalProperties();
29: Console.WriteLine("Información de los interfaces de red de: {0}.{1}", propsOrdenador.HostName, propsOrdenador.DomainName);
30: Console.WriteLine("\n\tNombre de host ...........: {0}", propsOrdenador.HostName);
31:
32: //Info de las tarjetas de red
33: NetworkInterface[] tarjetas = NetworkInterface.GetAllNetworkInterfaces();
34: if (tarjetas == null || tarjetas.Length < 1)
35: {
36: Console.WriteLine("No se han encontrado tarjetas de red");
37: return;
38: }
39:
40: //Recorremos las propiedades de cada tarjeta
41: foreach (NetworkInterface tarjeta in tarjetas)
42: {
43: //Nombre de la tarjeta
44: Console.WriteLine("\n{0}:",tarjeta.Name);
45: Console.WriteLine(" Descripción .............. : {0}", tarjeta.Description);
46: Console.WriteLine(" Tipo de interfaz ......... : {0}", tarjeta.NetworkInterfaceType);
47: Console.WriteLine(" Velocidad ................ : {0:n}", tarjeta.Speed);
48: Console.WriteLine(" Estado ................... : {0}", tarjeta.OperationalStatus);
49: Console.WriteLine(" Soporta Multicast ........ : {0}", tarjeta.SupportsMulticast);
50: Console.WriteLine(" Dirección física (MAC) ... : {0}", ObtenMACLegible(tarjeta.GetPhysicalAddress().GetAddressBytes()));
51:
52: //Propiedades de protocolos
53: IPInterfaceProperties propiedades = tarjeta.GetIPProperties();
54: //IPv6?
55: bool soportaIPv6 = tarjeta.Supports(NetworkInterfaceComponent.IPv6);
56: Console.WriteLine(" ¿Soporta IPv6? ........... : {0}", soportaIPv6);
57: }
58: }
59:
60: //Pasamos los bytes de la dirección física a Hexadecimal para mostrarlos como MAC
61: private static string ObtenMACLegible(byte[] bytes)
62: {
63: string MAC = "";
64: for(int i = 0; i< bytes.Length; i++)
65: {
66: MAC += String.Format("{0}", bytes[i].ToString("X2"));
67: // Se mete un guión tras cada byte excepto en el último
68: if (i != bytes.Length -1)
69: {
70: MAC += ("-");
71: }
72: }
73: return MAC;
74: }
75: }