Artigo WebMobile 14 - PING - Crie um aplicativo de PING para Smartphones

O objetivo desse artigo é trabalharmos com o desenvolvimento de um aplicativo para Smarphones utilizando conexão com a internet, importação de API nativa do Windows e uso de XML para guardarmos informações do aplicativo.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

PING

Crie um aplicativo de PING para Smartphones

 

 

Recentemente tive a necessidade de verificar o status de alguns serviços e servidores que utilizo, e como possuo um Smartphone com Windows Mobile e não dispunha de ponto de acesso à internet em alguns lugares, resolvi desenvolver um aplicativo de PING para meu dispositivo.

Mas o que é PING? É um acrônimo para as palavras Packet Internet Groper e não é só isso, PING também é um substantivo adotado como nome pela marinha americana para descrever o ato da busca de objetos no mar pelos seus submarinos. Administradores de Rede usam muito esse aplicativo para checar disponibilidade de servidores, serviços, estações etc.

A resposta dos pacotes enviados a um Host/IP retorna basicamente o tamanho de bytes enviados para a requisição, tempo de resposta do Host/IP em milissegundos e TTL, que é o número de pontos (routing nodes) que o PING poderá passar antes de ser descartado.

O objetivo desse artigo é trabalharmos com o desenvolvimento de um aplicativo para Smarphones utilizando conexão com a internet, importação de API nativa do Windows e uso de XML para guardarmos informações do aplicativo.

Criando a classe ICMPMobile para execução do PING

Na seção Requisitos temos todos os softwares necessários para desenvolver o exemplo deste artigo. Para iniciar a programação, abra o Visual Studio 2005 e crie um novo projeto, através do menu File>New>Project. Na caixa de diálogo, escolha Visual C#>Smart Device>Windows Mobile 5.0 Smartphones>Device Application com o nome de “SmartPing”.

Para criar a classe que fará todo o processo de tratamento das informações inseridas pelo usuário como requisição, tratamento e formatação da resposta do aplicativo, clique no projeto com o botão direito, escolha Add>Class e adicione uma nova classe com o nome de “IcmpMobile”.

Exclua o construtor criado automaticamente, deixando a classe como na Listagem 1.

 

Listagem 1. Classe IcmpMobile

namespace SmartPing

{

public class IcmpMobile

{

}
}

 

Primeiramente vamos declarar as variáveis que serão usadas na classe, suas respectivas propriedades, os eventos e em seguida as importações das API’s necessárias para executarmos os métodos como veremos a diante.

Inicialmente é preciso informar obrigatoriamente o IP ou Host para ser pingado, e como parâmetros opcionais, o tamanho do pacote de requisição e o tempo limite para espera da requisição, conforme declaramos no seguinte código:

 

private int _requestSIZE;

private int _timeOUT;

 

Em seguida crie as propriedades para expor essas variáveis (Listagem 2).

 

Listagem 2. Propriedades da classe

public int requestSIZE

{

  get { return _requestSIZE; }

  set { _requestSIZE = value; }

}

 

public int TimeOUT

{

  get { return _timeOUT; }

  set { _timeOUT = value; }

}

 

Agora crie o construtor da classe e defina os valores iniciais:

 

public IcmpMobile()

{

  requestSIZE = 32;

  TimeOUT = 30000;

}

 

Para saber se a requisição foi bem sucedida ou o tempo limite do pedido foi esgotado é necessário criar manipuladores e eventos para tratar essas informações. Crie-os conforme a Listagem 3. Os eventos são respectivamente: o de retorno da resposta do PING, o de tempo esgotado (TimeOut) e o de erro.

 

Listagem 3. Eventos e manipuladores da classe IcmpMobile

public delegate void PingReplyDelegate(object sender,

  System.Net.IPAddress ReplyIPAddress, int Bytes,

  int Time, int TTL);

public event PingReplyDelegate ReplyReceived;

 

public delegate void PingTimeOutDelegate(

  object sender, System.Net.IPAddress ReplyIPAddress,

  int Bytes);

public event PingTimeOutDelegate RequestTimedOut;

 

public delegate void PingErrorDelegate(object Sender,

  string ErrorMessage);

public event PingErrorDelegate PingError;

 

Até aqui tudo bem, agora é preciso importar a API do Windows que contém os métodos que permitem trabalhar com requisições e resposta a Host/IP sobre o protocolo IPv4. O Assembly que permite isso no Windows é o iphlpapi.dll, que é exatamente um IP HELPER e disponibiliza os métodos IcmpSendEcho, IcmpCreateFile e IcmpCloseHandle.

O primeiro método é o que envia a requisição e recebe a resposta do Host onde um dos parâmetros necessários para a execução desse, é a resposta do IcmpCreateFile que tem a função de abrir um manipulador que permite trabalhar as requisições do Icmp Echo que serão emitidas ao Host/IP informado.

Esse último por sua vez é o responsável por fechar o manipulador, veja na Listagem 4 como é feita a importação e uso desses métodos.

 

Listagem 4. Importação do Windows IP Helper API

[System.Runtime.InteropServices.DllImport(

  "iphlpapi.dll", SetLastError = true)]

internal static extern IntPtr IcmpCreateFile();

 

[System.Runtime.InteropServices.DllImport(

  "iphlpapi.dll", SetLastError = true)]

internal static extern bool IcmpCloseHandle(

  IntPtr Handle);

 

[System.Runtime.InteropServices.DllImport(" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados