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
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.