Esse artigo faz parte da revista Clube Delphi edição 9. 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.


Palheta Fast Net - Parte I

O guia  definitivo para utilizar os componentes Internet

 

Esta matéria irá atender ao pedido de vários leitores desta revista.   Aqui, iremos, a cada edição, detalhar todos os componentes da palheta FastNet. Esta palheta sempre causa curiosidade para quem a vê pela primeira vez: vários componentes representando serviços da Internet - HTTP, NNTP, FTP, e outros - sempre despertam aquela de vontade de “tenho que usar estes recursos”. A partir deste número, desbravaremos cada componente, construindo um aplicativo de exemplo com cada um.

         Todos os objetos da palheta foram construídos pela empresa NetMasters LLC.  Os componentes encontrados são de fácil compreensão, desde que o usuário já possua uma pré-noção de qual serviço o objeto representa.

         Os componentes da palheta NetMaster não apresentam nenhuma novidade em termos de serviços TCP/IP. Todos já são bastante conhecidos, e podem ser encontrados na lista RFC (Request for Comments).

 

 

Uma Palavra sobre a RFC

 

         A RFC (Request For Comments) é uma série de documentos que definem vários aspectos genéricos da Internet, como:

 

Quais protocolos existem;

Como estes protocolos funcionam e devem ser implementados;

Parâmetros de transmissão;

Descrição de protocolos;

Palavras de especialistas;

E muitos outros.

 

         A RFC nasceu junto com a Internet (na época - Arpanet), no ano de 1969. Um de seus maiores contribuintes foi Jonathan B. Postel, um dos gurus da Net. Jon criou e editou a maioria dos vários artigos da RFC. Os descritos na lista são públicos, e podem ser lidos por qualquer pessoa.

         Mais informações e descrições mais detalhadas da RFC podem ser adquiridas em www.rfc-editor.org

         Os documentos da rfc podem ser obtidos em www.faqs.org

 

 

O Primeiro Objeto: TNMDayTime

 

         Este componente  permite recuperar a data e hora de um servidor DayTime, conforme descrito na RFC 867. Repare que este objeto é utilizado para construir apenas o cliente DayTime, prevendo a já existência de um servidor. Segundo a RFC, o serviço consiste nos seguintes passos:

 

         O cliente efetua uma conexão com o servidor DayTime, através da porta 13 (tanto para TCP quanto UDP);

O servidor abre a conexão e devolve uma string ASCII contendo a data e hora local;

O cliente recebe a string e fecha a conexão com o servidor, ou fecha a conexão por Timeout caso a requisição não seja atendida;

 

Nota: É preciso cuidado no tratamento da string recebida, visto que não há regra para a formatação da data. Ou seja, cada servidor pode retornar a data de um jeito diferente, sendo impossível prever como a data será recebida.

 

Exemplo de uso do objeto TnmDayTime:

 

         Insira um objeto Tbutton e um objeto TnmDayTime. No evento OnClick do botão, digite:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

NMDayTime1.TimeOut := 5000;

  NMDayTime1.Host := 'www.netmastersllc.com';

  Label1.Caption := NMDayTime1.DayTimeStr;

end;

 

         A propriedade TimeOut indica que o tempo de espera pela resposta será de 5 segundos. A propriedade Host indica o endereço do servidor e a leitura da propriedade DayTimeStr executa a requisição ao servidor.

 

Objeto TnmEcho

 

         Este objeto é utilizado para enviar caracteres ASCII para um servidor ECHO. Este serviço está descrito na RFC 862. O componente TnmEcho é responsável apenas pelo cliente Echo. Segundo a RFC, este serviço consiste nos seguintes passos:

 

O cliente abre a conexão com o servidor, através da porta 7 (TCP e UDP)

O cliente envia um pacote com alguns caracteres ASCII

O servidor recebe o pacote, enviando-o novamente, exatamente como recebeu

O cliente recebe o pacote reenviado pelo servidor e fecha a conexão

 

Exemplo de uso do objeto TnmEcho

 

         Em um formulário, insira quatro objetos Tlabel, um objeto Tedit e um objeto Tbutton. Altere a propriedade dos objetos de acordo com a tabela abaixo:

 

Label1.caption:  'Resposta';

Label3.Caption: 'Tempo de Resposta'

Button1.Caption:  'Echo!';

 

No evento Click do botão, digite;

 

procedure

TForm1.Button1Click(Sender: TObject);

begin

  screen.cursor:=crHourGlass;

  nmEcho1.Connect;

  label2.caption:='Conectando...';

  label2.caption:=nmEcho1.Echo

(Edit1.text);

  Label4.caption:=FloatToStr( nmEcho1.ElapsedTime);

  nmEcho1.Disconnect;

  screen.cursor:=crDefault;

end;

 

         Ou seja, o que o usuário digitar na caixa de edição, será ecoado para o servidor quando o botão for clicado. A mensagem retornada e o tempo de resposta serão exibidos nos objetos Label2 e Label4.

 

 

Objeto TNmTIME

 

         Este objeto permite recuperar a data e hora de um servidor Time, conforme descrito na RFC 868. A diferença para com o protocolo 867 (e, consequentemente, com o objeto TnmDayTime), é que este serviço retorna a quantidade de segundos entre a data 01/01/1900 e a data corrente. Segundo a RFC, este serviço consiste nos seguintes passos:

 

O cliente efetua uma conexão com o servidor Time, através da porta 37 (tanto para TCP quanto UDP);

O servidor abre a conexão e devolve um número de 32 bit  contendo a quantidade de segundos;

O cliente recebe a string e fecha a conexão com o servidor, ou fecha a conexão por Timeout caso a requisição não seja atendida;

 

Veja abaixo um exemplo dos possíveis retornos de um servidor Time:

 

2,208,988,800 equivale a  00:00 1 Jan 1970 GMT

2,524,521,600 equivale a  00:00 1 Jan 1980 GMT

 

Exemplo de uso do objeto TnmTime:

 

         Insira um objeto Tbutton e um objeto TnmTime. No evento OnClick do botão, digite:

 

procedure

TForm1.Button1Click(Sender: TObject);

begin

NMTime1.TimeOut := 5000;

  NMTime1.Host := 'tmc.edu';

  Label1.Caption := NMTime1.TimeStr;

end;

 

         Na próxima edição continuaremos com mais objetos da palheta. Para baixar os exemplos aqui descritos, siga os seguintes passos: entre em nossa homepage (www.clubedelphi.com.br);

Clique no link Exemplos;

Clique na categoria Internet, e faça o download dos arquivos nmdaytime.zip, nmecho.zip, nmtime.zip.