Esse artigo faz parte da revista Clube Delphi edição 35. Clique aqui para ler todos os artigos desta edição

 

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Traçando Rotas

Crie um traceroute com componentes Indy

Neste artigo vamos desenvolver uma aplicação que faz graficamente o que faz o utilitário tracert disponível no Windows e no Linux/Unix (nestes, chamado traceroute). O exemplo é semelhante ao utilitário ping criado na edição anterior, mas com muito mais funcionalidades.

Ping e Tracert

Equanto o ping simplesmente envia pacotes para um destino e mede o tempo de ida e volta, o traceroute analisa todo o caminho por onde trafegam os pacotes, colhendo informações sobre os servidores ou roteadores intermediários (chamados de hops, saltos em inglês), além de medir o tempo de ida e volta para cada hop. A Figura 1 ilustra uma simulação do traceroute.

 

Figura 1. Exemplo com traceroute

Muitas vezes falamos que um site está lento, mas nem sempre é o próprio site: o atraso pode ser causado por um dos servidores intermediários envolvidos no trajeto até o servidor. Com o traceroute podemos descobrir falhas e identificar razões para a lentidão nos servidores envolvidos no processo de envio e recebimento de pacotes.

Criação da interface

Nosso utilitário é uma adaptação de um programa de demonstração que vem no pacote de componentes Indy. Vamos iniciar o desenvolvimento.

Crie uma nova aplicação CLX (File|New>CLX Application). Grave a unit com o nome “un_tracert.pas”  e o projeto como “tracert.dpr”.

Insira um TPanel com Align=alTop e Name=pnTopo. Com o foco no pnTopo, insira outro TPanel, com Align=alTop e Name=pnDados. Ainda neste painel, insira um TListBox com Align=alClient e Name=lbLog.

Agora com o foco em pnDados, insira os objetos que seguem, alterando suas respectivas propriedades:

TLabel: Caption=Host Destino;

TLabel: Caption=Máximo de Hops

TEdit: Name=edTarget; Text=(deixar em branco)

TSpindEdit: Name=seMaxHops

TButton:  Caption=Executa; Name=btExecuta

TButton: Caption=Cancela; Name=btCancela

Com o foco no formulário, insira mais um TPanel com Align=alClient e Name=pnInfo; com o foco em pnInfo insira um TListView (paleta Common Controls), fazendo Align=alClient, Name=LvTrace,  ViewStyle=vsReport. Para Columns, insira três colunas (como na Figura 2).

Insira um idICMPClient (paleta Indy Clients) com Name=idICMPClient e idAntiFreeze (paleta Indy Misc) com Name=idAntiFreeze.

A Figura 3 ilustra o formulário finalizado.

...

Quer ler esse conteúdo completo? Tenha acesso completo