Sobre Capturar a data e hora do servidor

Delphi

10/04/2005

Não estou conseguindo capturar a data e a hora do servidor. Já lí todas os tópicos neste fórum sobre isto.

Achei dica para usar: net time //<nome do servidor> /set /yes. Funcionou na minha rede domestica. Mas preciso para usar em um sistema no meu cliente.

O problema é que estou usando linha telefonica, ou seja, estou usando DialUp. O Servidor do meu cliente é um servidor de FTP com windows 2000 profissional. Minha maquina está com windows 2000 profissional também.

Usando o componete de FTP da palheta FastNet, eu me conecto, mando arquivos, etc. Só nao consigo capturar a hora... Observei que na mesma palheta tem dois componentes: Time e DateTime. Por algum deles posso capturar a hora do servidor?

Eu só preciso disto para resolver o meu problema. Se alguem puder me ajudar, agradeço muito...

Eu uso o Delphi 5.


Adonis

Adonis

Curtidas 0

Respostas

Massuda

Massuda

10/04/2005

... Observei que na mesma palheta tem dois componentes: Time e DateTime. Por algum deles posso capturar a hora do servidor?
Sim, desde que seu servidor esteja executando os servidores/serviços correspondentes.

O componente NMDayTime é o cliente do [url=http://www.faqs.org/rfcs/rfc1305.html]protocolo DayTime[/url]; nesse protocolo, o servidor envia a data e hora no formato texto:
Tuesday, February 22, 1982 17:37:43-PST
ou
02 FEB 82 07:59:01 PST


Já o componente NMTime é o cliente do [url=http://www.faqs.org/rfcs/rfc867.html]protocolo Network Time[/url]; nesse protocolo, o servidor envia a data e hora em um formato binário.

... Eu uso o Delphi 5.
Não é recomendável utilizar os componentes da paleta FastNet se você planeja atualizar seu Delphi para uma versão mais recente, já que esses componentes não existem mais (a empresa fechou).


GOSTEI 0
Adonis

Adonis

10/04/2005

Massuda, diante mão já agradeço [u:a499c0378d]muito[/u:a499c0378d] a sua ajuda...

O que você quer dizer com: ´que seu servidor esteja executando os servidores/serviços correspondentes´?

Sobre o que você recomendou para não usar a palheta FastNet, se tenho a intenção de migrar do Delphi 5: Tenho interesse em migrar... Mas não agora e durante um grande tempo. E também tenho urgência nesta captura da hora. É só o que falta para concluir o sistema (comunicação via FTP).

Massuda,

Eu usei o exemplo da palheta da FastNet: DTmDemo. Porém quando executo o mesmo dá o erro: ´Connection timed out´. Porquê? Tem que está com Ftp conectado? Pois no exemplo nao diz nada sobre isto.

Meu computador tem Windows 2000 profissional. No Servidor do cliente também. Lá tem um programa de Servidor de Ftp. Eu uso Paradox.
Eu me conecto por um dialUp.

Eu não sabia nada de Ftp. Aprendí tudo neste forum. Ficou tudo ok com a transmissao por Ftp. Só falta esta captura da hora.

Depois de conectado, eu entro no DOS e digito: ´net time \\192.168.0.1 /set /yes e dá o erro: ´acesso negado´. Porque? Eu uso na minha rede local e dá certo. Porque não dá via Ftp com DialUp? Eu adianto que o IP dá minha máquina é dado pelo servidor. Eu não o configuro nas configuraçoes de rede...

Criei a rotina dentro do sistema:
pHora := PChar(´command.com /c Net Time \\´ + Edit2.Text + ´ /set /yes´);
WinExec(pHora,sw_ShowNormal);
Neste Edit2.text coloco o nome do servidor ou o IP e nada de funcionar.

Massuda, só preciso disto. Me ajude por favor. Agradeço muito...


GOSTEI 0
Marioguedes

Marioguedes

10/04/2005

Olá, neste servidor há um SGBDR em atividade ao qual você tenha acesso? Se sim, de um select simples resgatando a hora, em postgres seria now().


GOSTEI 0
Massuda

Massuda

10/04/2005

O que você quer dizer com: ´que seu servidor esteja executando os servidores/serviços correspondentes´? ... Eu usei o exemplo da palheta da FastNet: DTmDemo. Porém quando executo o mesmo dá o erro: ´Connection timed out´. Porquê? Tem que está com Ftp conectado? Pois no exemplo nao diz nada sobre isto.
Do mesmo modo que você precisa ter um programa servidor de FTP, para usar esses protocolos (DayTime e Network Time) você precisa ter o programa servidor correspondente.

Quando você executou o exemplo, provavelmente não havia tal programa servidor e, na ausência de resposta, o cliente deu timeout.

Se não me engano, no Windows 2000 tem a opção de instalar um servidor de DayTime via Adicionar/remover componentes do Windows no Painel de Controle (procure pelo componente Serviços de Rede/Serviços de TCP/IP Simples).

Uma alternativa seria usar um servidor de Network Time público, mas geralmente precisa se registrar junto ao órgão público que mantem o servidor.

Depois de conectado, eu entro no DOS e digito: ´net time \\192.168.0.1 /set /yes ...
o comando NET da linha de comando executa um protocolo chamado NetBIOS (posso estar enganado quanto ao nome), que não é o utilizado na internet; esse protocolo só funciona dentro da rede local. Portanto, não tem como ser utilizado no seu caso.

Uma sugestão... porque você não grava um pequeno arquivo temporário no servidor FTP e assim obtem uma data/hora do servidor através de um list com o arquivo que você criou? Depois de obter o list, apague o arquivo.


GOSTEI 0
Daniel_mc

Daniel_mc

10/04/2005

Olá, neste servidor há um SGBDR em atividade ao qual você tenha acesso? Se sim, de um select simples resgatando a hora, em postgres seria now().


Caso seja um outro SGDB:

 Select Curtime()



GOSTEI 0
Adonis

Adonis

10/04/2005

daniel_mc e marioguedes, Diante mão já agradeço a ajuda.

Eu já estou no delphi há uns tres anos, mais me considero ainda um iniciante. O que é: SGBDR? Se isto for Banco de Dados, tenho certeza que não tem. E também eu não tenho acesso ao servidor.

Massuda,

Qual seria o programa servidor correspondente do DayTime e Network Time? Vou falar com o técnico do servidor para fazer o que você disse em: ´Adicionar/remover componentes do Windows no Painel de Controle (procure pelo componente Serviços de Rede/Serviços de TCP/IP Simples)´.

Sobre: ´Uma sugestão... porque você não grava um pequeno arquivo temporário no servidor...´; Se eu entendí, você que dizer que quando eu mando um arquivo para o servidor, ele fica gravado com a data e a hora do proprio servidor? Porque se for, realmente pode ser uma solução...
Vou agora mesmo testar esta sugestao...

Agradeço muito as ajudas...


GOSTEI 0
Adonis

Adonis

10/04/2005

Massuda,

Resolví o meu problema. Eu usei a sua: ´sugestão... porque você não grava um pequeno arquivo temporário...´ e deu tudo certo. Recuperei a data e hora do servidor.

Meu Amigo, Se não fosse por você nem tão cedo eu consegueria. Muito, muito obrigado...


GOSTEI 0
Adonis

Adonis

10/04/2005

Massuda,

em NMFTP1.Timeout := 5000;

o 5000 quer dizer 5 segundos ou 5 minutos?

Outra:

Eu usei o: NMFTP1.Delete(´arquivo.DB´);
Porem quando nao existe este arquivo.DB no servidor Ftp dá um erro e para a execução do meu sistema no meu computador...

No normal eu usaria:
if FileExists(´arquivo.DB´) then begin
// apaga o arquivo...
end;

Mas usando NMFTP como ficaria a rotina?

Agraeço alguma ajuda...


GOSTEI 0
Massuda

Massuda

10/04/2005

Eu não posso ajudar muito neste ponto, pois nunca utilizei esses componentes FastNet.
em NMFTP1.Timeout := 5000; ... o 5000 quer dizer 5 segundos ou 5 minutos?
Geralmente valores de timeout são dados em milissegundos, portanto esse tempo deve ser 5 segundos.

Eu usei o: NMFTP1.Delete(´arquivo.DB´); Porem quando nao existe este arquivo.DB no servidor Ftp dá um erro e para a execução do meu sistema no meu computador...
Para ter algo como o FileExists, você teria de obter a lista dos arquivos existentes no servidor e checar se o arquivo em questão está na lista.

Os programas (cliente) de FTP geralmente mantem uma lista desse tipo que é criada assim que o programa conecta com o servidor.


GOSTEI 0
Steve_narancic

Steve_narancic

10/04/2005

se você estiver utilizando banco dados firebird utilize a seguinte instrução

(´SELECT CURRENT_TIMESTAMP AS DATA FROM RDB$DATABASE´);


GOSTEI 0
Adonis

Adonis

10/04/2005

steve_narancic,

Infelismente ainda uso paradox. Mesmo assim obrigado pela ajuda.

Massuda,

Mais uma vez, nao atentei para a coisa. E olhe que voce já tinha dado a ideia do list... Vou fazer... Pois com certeza vai dar certo. obrigado pela ajuda.


GOSTEI 0
Adonis

Adonis

10/04/2005

Massuda,

Ainda tem um problema:

Abro o form, Uso o dialup + ftp. fecho o form. Quando abro o form novamente e uso o dialup + ftp, a conexao fica lenta e sempre dá algum erro no ftp. Porem se toda vez que for usar a dialup + ftp, antes reiniciar o micro, dá tudo certo.

Será que fica alguma coisa na memoria que eu deveria limpar? Por exemplo: NMFTP1.Free?

Eu já uso na saida do form:
NMFTP1.Disconnect;
DialUp.HangUp;
DialUp.Free;

Ou será que o problema vem de outro lugar?

Eu uso paradox, delphi 5 e windows 2000.

Agradeço alguma ajuda...


GOSTEI 0
POSTAR