[Ejemplo] Utilizando Namespace NetworkInformation

Iniciado por kub0x, 16 Abril 2012, 14:19 PM

0 Miembros y 1 Visitante están viendo este tema.

kub0x

Buenas tardes a todos,

bueno hoy tuve un rato mañanero libre y me puse a investigar por cuenta propia las clases del Namespace Networkinformation. Básicamente me recuerda al mítico comando ipconfig, que si te esmeras programando es como teclear ipconfig /all para listar todas las propiedades de los adaptadores de red.

Bueno lo que hace este sencillo ejemplo es listar todas las interfaces de Red, despues se pide ingresar un número que concuerde con una de las interfaces del menu y acto seguido se recogen las propiedades en un método y se muestran. Cabe decir que si no estás conectado a la red pues poca información obtendrás de la interfaz. Os dejo una screen de como queda.



Source:

Código (VB.NET) [Seleccionar]

Imports System.Net.NetworkInformation
Imports System.Text
Imports System.Net
Module Module1
    Private Sub Enumerar_Interfaces()
        Dim InterfazRed() As NetworkInterface = NetworkInterface.GetAllNetworkInterfaces
        For i As Int32 = 0 To InterfazRed.Length - 1
            If InterfazRed(i).Name.Contains("Loopback") Then
            Else
                Console.WriteLine(i & ")" & InterfazRed(i).Name)
            End If
        Next
        Console.WriteLine()
        Obtener_Propiedades(InterfazRed)
    End Sub
    Private Sub Obtener_Propiedades(ByVal InterfazRed() As NetworkInterface)
        Dim k As Int32 = 0
        Console.WriteLine("Introduce un indice para visualizar las propiedades del adaptador deseado")
        k = Int32.Parse(Console.ReadLine())
        If k >= 0 And k <= 9 Then
            Console.Clear()
            Console.WriteLine("Nombre de la Interfaz: " & InterfazRed(k).Name)
            Console.WriteLine("{0} " & InterfazRed(k).Speed / 1000000 & " {1}", "Velocidad Adaptador:", _
                              "Mbps")
            Console.WriteLine("Descripción: " & InterfazRed(k).Description)
            Console.WriteLine("GUID: " & InterfazRed(k).Id)
            Dim operativo As OperationalStatus = InterfazRed(k).OperationalStatus
            Select Case operativo
                Case 1
                    Console.WriteLine("Estado: Conectado")
                    Dim PropiedadesIp As IPInterfaceProperties = InterfazRed(k).GetIPProperties
                    With PropiedadesIp
                        For Each unicast As UnicastIPAddressInformation In .UnicastAddresses
                            If unicast.Address.AddressFamily = Sockets.AddressFamily.InterNetwork Then
                                Console.WriteLine("Dirección IPv4: " & unicast.Address.ToString)
                                Console.WriteLine("Máscara de Subred: " & unicast.IPv4Mask.ToString)
                            Else
                                Console.WriteLine("Direccion IPv6: " & unicast.Address.ToString)
                            End If
                        Next
                        Console.Write("Servidor DHCP: ")
                        For Each dhcp As IPAddress In .DhcpServerAddresses
                            Console.WriteLine(dhcp)
                        Next
                        Console.WriteLine("Servidores DNS:")
                        For Each servidor As IPAddress In .DnsAddresses
                            Console.WriteLine(servidor)
                        Next
                        Console.Write("Puerta de Enlace: ")
                        For Each gateway As GatewayIPAddressInformation In .GatewayAddresses
                            Console.WriteLine(gateway.Address)
                        Next
                        Console.Write("Direccion Multicast: ")
                        For Each multicast As MulticastIPAddressInformation In .MulticastAddresses
                            Console.WriteLine(multicast.Address)
                        Next
                    End With
                Case 2
                    Console.WriteLine("Estado: Desconectado")
            End Select
            Dim MACByte As Byte() = InterfazRed(k).GetPhysicalAddress.GetAddressBytes
            Dim MAC As String = Nothing
            For Each byteMac As Byte In MACByte
                MAC += Hex((byteMac)) & ":"
            Next
            Console.WriteLine("MAC: " & MAC.Remove(MAC.Length - 1, 1) & vbNewLine)
        Else
            Console.Clear()
            Main()
        End If
    End Sub
    Sub Main()
        Try
            Enumerar_Interfaces()
        Catch ex As Exception
        End Try
        Console.Read()
    End Sub
End Module


Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate