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.
(http://img100.imageshack.us/img100/22/networkp.jpg)
Source:
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.