VB .NET – Obtendo informações da rede local
A plataforma .NET↳.NET113 conteúdosNovidades do .NET 9 – o tipo genérico OrderedDictionaryDev (Back & Front) · dez 2024Novidades .NET 10: novas formas de uso do .NET CLIDev (Back & Front) · dez 2025Novidades do .NET 5: implementando um proxy reverso com YARP + ASP.NET 5Dev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → inclui um conjunto
de classes para tratar diversos aspectos relacionados com redes.
Essas classes suportam quase tudo sobre programação baeada em
sockets através do protocolo de controle de transmissão
(TCP/IP) para efetuar o download de arquivos e páginas HTML a
partir da web sobre o protocolo HTTP.
Neste artigo veremos como
realizar algumas tarefas relacionadas com redes locais e ambiente
cliente/servidor usando as classes da plataforma .NET.
1. O obtendo informações sobre a configuração da rede local
Para obter informações sobre a
rede local usamos o método GetAllNetworkInterfaces da classe
NetWorkInterface do namespace System.NetworkInformation.
Neste caso iremos obter um array de
objetos derivados a partir da classe abstrata NetworkInterface,
onde cada objeto representa uma interface de rede disponível na
máquina local.
Usamos os membros de cada objeto NetworkInterface
para retornar a informação sobre a configuração de rede e as
estatísticas para a interface. Este recurso está disponível a
partir da versão 2.0 da plataforma .NET.
A seguir temos nas tabelas abaixo as
propriedades e métodos da classe NetworkInterface:
- Propriedades
| Membro | Descrição |
| Description | Obtém uma String que fornece uma descrição geral da interface. |
| Id | Obtém uma String que contém um identificador único da interface. |
| isReceiveOnly | Obtém um valor boleano que indica se a interface pode somente receber ou receber/enviar dados. |
| Name | Obtém uma string contendo o nome da interface |
| NetworkInterfaceType | Obtém um valor a partir da enumeração System.Net.NetworkInformation.NetworkInterfaceType que identifica o tipo de interface. Os valores comuns incluem: Ethernet, FastEthernet and LoopBack. |
| OperationalStatus | Obtém um valor a partir da enumeração System.Net.NetworkInformation.OperationalStatus que identifica o estado da interface. Valores-padrão incluem: Down e Up. |
| SupportsMulticast | Obtém um valor boleano que indica se a interface está habilitada para receber pacotes multicast. |
| Speed | Obtém um valor Long que identifica a velocidade (em bits por segundo) da interface como informada pela interface (não baseada em um cálculo dinâmico) |
- Métodos
| Membro | Descrição |
| GetIPProperties | Retorna um objeto System.Net.NetworkInformation.IPInterfaceProperties que fornece acesso à informação da configuração TCP/IP para a interface. As propriedades do objeto IPInterfaceProperties fornecem acesso ao WINS, DNS, gateway e configuração do endereço IP. |
| GetIPv4Statistics | Retorna um objeto System.Net.NetworkInformation.IPv4InterfaceStatistics que fornece acesso às estatísticas TCP/IP v4 para a interface. As propriedades do objeto IPv4InterfaceStatistics fornecem o acesso à informação sobre bytes enviados e recebidos, pacotes enviados e recebidos, pacotes descartados e pacotes com erros. |
| GetPhysicalAddress | Retorna um objeto System.Net.NetworkInformation.PhysicalAddress que fornece acesso ao endereço físico da interface. Você pode obter o endereço físico como um array de Byte usando o método PhysicalAddress.GetAddressBytes ou como uma string usando PhysicalAddress.ToString. |
| Supports | Retorna um valor boleano indicando se a interface suporta um protoco específico. Você especifica o protocolo usando um valor a partir da enumeração System.Net.NetworkInformation.NetworkInterfaceComponent. Os valores possíveis incluem IPv4 e IPv6. |
A classe NetworkInterface também
fornece outros membros estáticos (Shared)
que podem ser úteis como:
- A propriedade LoopbackInterfaceIndex
que retorna um inteiro identificando o índice da
interface loopback no interior do array NetworkInterface
retornado pelo método GetAllNetworkInterfaces; - O método GetIsNetworkAvailable
que retorna um valor boleano indicando se qualquer
conexão de rede está disponível, ou seja, o valor de OperationalStatus
está definido como Up.
Vejamos então um exemplo prático
que usa os membros da classe NetworkInterface para exibir a
informação sobre todas as interfaces de rede na máquina local:
Crie um novo projeto no Visual Basic 2008 Express
Edition com o nome de infoRedeLocal;
No formulário padrão inclua os componentes:
TextBox, ListBox e Button conforme o leiaute da figura abaixo:

Agora defina os namespaces que iremos usar para
poder ter acesso às classes e obter informação sobre a rede local;
Imports System
Imports System.Net.NetworkInformation
A seguir vamos definir uma rotina chamada verificaRedeLocal()
que será chamada para usar as classes da plataforma .NET e obter informações da
rede local. O código é dado abaixo:
Private Sub verificaRedeLocal()<br /><br /><br />If NetworkInterface.GetIsNetworkAvailable Then<br /><br /> ' Obtem e define todos os objetos NetworkInterface para a maquina local<br /><br /> Dim interfaces As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()<br /><br /><br /> ' Percorre as interfaces e exibe informaÆo<br /><br /> For Each ni As NetworkInterface In interfaces<br /><br /> ' relatorio endereco fisico.<br /><br /> txtEnderecoFisico.Text = " Endereco Fisico : " & ni.GetPhysicalAddress().ToString()<br /><br /> ' relatorio de informacao basica da interface<br /><br /> lstInterfaceLocal.Items.Add(" Nome da Interface: " & ni.Name)<br /><br /> lstInterfaceLocal.Items.Add(" Descricao : " & ni.Description)<br /><br /> lstInterfaceLocal.Items.Add(" ID : " & ni.Id)<br /><br /> lstInterfaceLocal.Items.Add(" Tipo : " & ni.NetworkInterfaceType)<br /><br /> lstInterfaceLocal.Items.Add(" Velocidade : " & ni.Speed)<br /><br /> lstInterfaceLocal.Items.Add(" Status : " & ni.OperationalStatus)<br /><br /> ' Relatorio para estatistica de rede para a interface<br /><br /> lstInterfaceLocal.Items.Add(" Bytes enviados : " & ni.GetIPv4Statistics().BytesSent)<br /><br /> lstInterfaceLocal.Items.Add(" Bytes Recebidos: " & ni.GetIPv4Statistics.BytesReceived)<br /><br /> ' Informa a configuracao do IP<br /><br /> lstInterfaceLocal.Items.Add(" Enderecos IP:")<br /><br /><br /> For Each addr As UnicastIPAddressInformation In ni.GetIPProperties.UnicastAddresses<br /><br /> lstConfiguracaoIP.Items.Add("contrato/validade " & addr.Address.ToString & (DateTime.Now.AddSeconds(addr.DhcpLeaseLifetime)).ToString)<br /><br /> Next<br /><br /> Next<br /><br />Else<br /><br /> MsgBox("Nao ha rede local disponivel")<br /><br />End If<br /><br />End SubAgora no evento Click do botão de comando
inclua o código abaixo que chama a rotina criada acima:
Private Sub btnExibir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExibir.Click<br /><br /> verificaRedeLocal()<br /><br />End SubExecutando o projeto em minha máquina local, o
resultado obtido foi o seguinte:

O resultado pode variar para cada máquina
dependendo da placa de rede e da configuração da mesma.
Pegue o projeto completo aqui:
infoRedeLocal.zip
Eu sei, é apenas VB .NET, mas eu
gosto…






José Carlos Macoratti




