C#
- Fazendo um ping via código
![]() |
Se você deseja verificar a disponibilidade de uma máquina na rede, pode fazer um ping via código usando a linguagem C#. |
Ping é um programa básico da Internet que permite que um usuário verifique se um determinado endereço IP existe e pode aceitar requisições.
O ping é usado para fazer um diagnóstico e garantir que o computador
host que o usuário está tentando acessar esteja
realmente operando. Ele funciona enviando uma requisição de eco do
Protocolo de Mensagens de Controle da Internet (ICMP) para uma interface
especificada na rede e aguardando uma resposta.
(acesso em novembro/2011 -
https://searchnetworking.techtarget.com/definition/ping )
Na linguagem C# temos a classe Ping do namespace System.Net.NetworkInformation para determinar se uma máquina esta disponível.
Os principais métodos da classe Ping são:
OnPingCompleted | Aciona o evento PingCompleted |
SendAsync | Tentar enviar uma mensagem de echo do protocolo ICMP a um computador e receber uma mensagem de resposta de eco ICMP; |
SendPingAsync | Cancela todas as solicitações assíncronas pendentes para enviar uma mensagem de eco do protocolo ICMP e receber uma mensagem de resposta de eco ICMP; |
A classe PingReply é usada para fornecer informações sobre status e os dados resultantes de uma operação Send ou SendAsync.
Vejamos um exemplo usando uma aplicação do tipo Console App(.NET Framework) no Visual Studio 2017 Community.
Este projeto usa a versão 7.3 da linguagem C# que incorpora novos recursos como Async Main, interpolação de strings ($ {}), diretiva using static, etc.
1- Os namespaces usados no projeto :
using System;
using System.Net.NetworkInformation;
using System.Threading.Tasks;
using static System.Console;
2 - No método Main
No método Main() temos um laço infinito onde o usuário informa a url que deseja pingar e a seguir chama o método TestaPing() passando a url informada. Para sair basta teclar Enter.
3 - O método TestaPing()
O método TestaPing, crie uma instância da classe Ping e envia uma requisição ping usando o método SendPingAsync que é assíncrono e quando awaited retorna um PingReply que podemos examinar.
Usamos o evento PingCompleted para obter informações sobre o status da conclusão e os dados coletadaos pela chamada SendPingAsync.
4 - O Evento PingCompleted
O evento PingCompleted usa o tipo de argumento PingCompletedEventArgs e. Se o ping foi cancelado ou ocorreu uma exceção essa informação pode ser acessada via propriedades Cancelled ou Error (que não estou tratando).
5 - O método ExibeInfoRepostaPing()
O método ExibeInfoRepostaPing mostra algumas das partes mais comuns dos dados que desejamos obter de um ping, como o RoundtripTime e o Status da resposta e podem ser acessados a partir das propriedades no PingReply.
Executando o projeto teremos o seguinte resultado:
A classe
Ping usa uma mensagem de requisição de eco do
ICMP (Internet Control Message Protocol)
definida no RFC 792. Se um computador não for
atingido com sucesso pela solicitação de ping, não significa necessariamente que
o computador está inacessível.
Muitos fatores podem evitar um ping com sucesso, além de a máquina estar off-line, a topologia de rede, firewalls, filtros de pacotes e servidores proxy todos podem interromper o fluxo normal de um pedido ping.
Por padrão, o Firewall do Windows desativa o tráfego ICMP, portanto, se você tiver dificuldades em pingar uma máquina, verifique as configurações do firewall nessa máquina.
Pegue o código do projeto aqui: CShp_Ping.zip
"E disse
Jesus: As raposas têm covis, e as aves do céu têm ninhos, mas o Filho do homem
não tem onde reclinar a cabeça."
Mateus 8:20
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? ![]() |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
VB .NET - Pingando o servidor periodicamente - Macoratti
Usando o Controle Winsock II - Macoratti
VB 2005 - Obtendo informações da rede com ... - Macoratti
VB. NET - Network e Remoting - Macoratti
C# - Obtendo o endereço MAC - Macoratti
C# - Compartilhando arquivos - Cliente/Servicor (socket) - Macoratti