Desenvolvimento - Visual Basic .NET
Introdução ao namespace System.Net.NetworkInformation do .NET 2.0
O .NET Framework 2.0 vem com diversos namespaces novos e o System.Net.NetworkInformation é um deles. Esse namespace contém classes para a manipulação de informações sobre uma rede, tais como a detecção de mudança de endereço, interfacess de redes conectadas, bytes enviados e recebidos, status da rede, etc.
por José Antonio Leal de FariasIntrodução
O .NET Framework 2.0 vem com diversos namespaces novos e o System.Net.NetworkInformation é um deles. Esse namespace contém classes para a manipulação de informações sobre uma rede, tais como a detecção de mudança de endereço, interfacess de redes conectadas, bytes enviados e recebidos, status da rede, etc. Neste artigo iremos discutir algumas destas classes.
A classe mais interessante deste namespace é a classe NetworkChange, que notifica uma aplicação sobre a mudança na rede em uma interface específica, tais como mudanças no estado de conexão. O MSN Messenger é um bom exemplo de aplicação que se conecta automaticamente quando uma rede está disponível e se desconecta automaticamente quando não há mais conexão com a internet.
A classe NetworkChange contém dois eventos estáticos chamados NetWorkAvailabilityChanged e NetworkAddressChanged que informam a aplicação da mudança de uma informação particular da rede. O exemplo a seguir informa ao usuário sobre mudanças na rede:
static void
{
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
Console.WriteLine("Pressione Enter para sair...");
Console.ReadLine();
}
static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
Console.WriteLine("O endereço da rede foi modificado.");
}
static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable)
Console.WriteLine("Rede conectada");
else
Console.WriteLine("Rede desconectada");
}
Enumerando as interfaces de rede
A classe NetworkInterface é a classe que fornece acesso a uma placa ou interface de rede em particular. Ela contém várias propriedades, tais como Velocidade, Status, Tipo e o endereço MAC. O seguinte exemplo enumera todas as interfaces de rede instaladas no sistema:
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in networkInterfaces)
{
Console.WriteLine("{0}, {1}, {2}, {3}", ni.Name, ni.Speed, ni.OperationalStatus, ni.NetworkInterfaceType);
}
Acessando estatísticas do protocolo IP
A classe IPv4InterfaceStatistics fornece acesso a informações estatísticas do protocolo IPv4 tais como bytes enviados/recebidos, pacotes enviados/recebidos, etc. Nós podemos acesso o objeto IPv4InterfaceStatistics chamando o método GetIPv4Statistics() do objeto NetworkInterface, como a seguir:
Console.WriteLine("Exibe o status do protocolo IPv4:");
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in networkInterfaces)
{
Console.WriteLine(ni.Name);
IPv4InterfaceStatistics ipstats = ni.GetIPv4Statistics();
Console.WriteLine(ipstats.BytesReceived);
Console.WriteLine(ipstats.BytesSent);
}
Pingando uma interface de rede
Checar o estado de uma interface de rede (pingar) é um dos mais comuns problemas que os desenvolvedores encontram quando desenvolvem alguma aplicação em rede. O .NET 2.0 resolve esse problema simplesmente fornecendo a classe Ping que contém uma implementação padrão do protocolo ICMP. Veja o exemplo a seguir:
Ping p = new ();
PingReply reply = p.Send("127.0.0.1");
Console.WriteLine("Host respondeu em {0} ms", reply.RoundtripTime);
Console.WriteLine("Ping Status {0}", reply.Status);
Propriedades globais do IP
Se você perdeu qualquer informação de sua rede até agora você pode obtê-las de volta através das classes IPGlobalProperties e IPGlobalStatistics que contém diversos métodos e propriedades para se obter informações detalhadas da rede. A seguir dois exemplos de importantes tarefas que podem ser feitas com essas classes.
Enumerando os Listeners TCP ativos
IPGlobalProperties ipprops = IPGlobalProperties.GetIPGlobalProperties();
foreach (IPEndPoint listener in ipprops.GetActiveTcpListeners())
{
Console.WriteLine("Endereço = {0}, Porta = {1}",listener.AddressFamily, listener.Port);
}
Enumerando as conexões ativas e seus status
IPGlobalProperties ipprops = IPGlobalProperties.GetIPGlobalProperties();
foreach (TcpConnectionInformation conn in ipprops.GetActiveTcpConnections())
{
Console.WriteLine("De = {0}, Até = {1}, Status = {2}",
conn.LocalEndPoint.Address,
conn.RemoteEndPoint.Address,
conn.State);
}
Enumerando a configuração do IP Global
A classe IPGlobalProperties fornece informações detalhadas sobre praticamente todos os protocolos IP instalados no sistema, como o número IP de cada interface, routers, etc, como a seguir:
IPGlobalProperties ipprops = IPGlobalProperties.GetIPGlobalProperties();
IPGlobalStatistics ipstats = ipprops.GetIPv4GlobalStatistics();
Console.WriteLine(ipstats.NumberOfInterfaces);
Console.WriteLine(ipstats.NumberOfRoutes);
Console.WriteLine(ipstats.ReceivedPackets);
Conclusão
O .NET Framework 2.0 vem com um namespace chamado System.Net.NetworkInformation que fornece diversas classes para visualizar importantes informações de uma rede, sendo a mais importante delas a classe NetworkChange que envia notificações para mudanças na rede, tais como conexão, desconexão, mudança de endereço, etc.
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET