Servidor NTP para harbour 3.0

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

amigos existe alguma funçao harbour que atualize a hora via internet por servidor ntp
agradeço des de ja
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Servidor NTP para harbour 3.0

Mensagem por fladimir »

Não conheço mas poderia-se montar uma usando algo que puxe do site:

http://www.horariodebrasilia.org/

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Servidor NTP para harbour 3.0

Mensagem por fladimir »

Colega segue abaixo como poderia fazer baseando no site q te falei:

P.S.: Baseado em exemplo Minigui disponibilizado na Seção de Downloads pelo Pablo César, adaptado para Harbour para exibição em Console texto.

Código: Selecionar todos

Function Main()
   Alert( STRTRAN(PegaDtHrBrasilia(), '*',';' )  )
RETURN NIL

Function PegaDtHrBrasilia()
 // baseado em exemplo Minigui disponibilizado na Seção de Downloads pelo Pablo César
	Local cRet := "", cPagina := ""
	local cTexto := "Acerte seu relógio com o horário de Brasília, a hora oficial do Brasil"

	IF (oOle := Cria_OLE( "InternetExplorer.Application", , .T.)) == NIL
		RETURN .F.
	ENDIF
	oOle:Visible   := .F. // Apresenta o Browser
	oOle:ToolBar   := .F. // Desativa a barra de ferramentas
	oOle:StatusBar := .F. // Desativa a barra de status
	oOle:MenuBar   := .F. // desativa a barra de menu
	oOle:Navigate("http://www.horariodebrasilia.org/")
	
	WHILE oOle:ReadyState() != 4  // Aguarda página ser carregada, mesmo q não seja visualizado no Navegador (opão Visible := F ou T)
	   INKEY(.5)
	END
	INKEY(.2)
	
	*** Retrieve the entire HTML document as a string
	cPagina := oOle:Document():Body:InnerText 
	oOle := NIL

	If cTexto $ cPagina
	   cPagina := Substr(cPagina,At(cTexto,cPagina)+70)
	   cPagina := Substr(cPagina,At(",",cPagina)+1)
	   cPagina := Alltrim(Substr(cPagina,1,At(CRLF,cPagina)+11))
	   cDia := Strzero(Val(Substr(cPagina,1,At(" ",cPagina))),2,0)
	   cPagina := Substr(cPagina,At("de ",cPagina)+3)
	   cMes := VqMes(Alltrim(Substr(cPagina,1,At(" ",cPagina))))
	   cPagina := Substr(cPagina,At("de ",cPagina)+3)
	   cAno := Substr(cPagina,1,At(CRLF,cPagina)-1)
	   cPagina := Substr(cPagina,At(CRLF,cPagina)+4)
	   cData := cDia+"/"+cMes+"/"+cAno
	   cHora := Substr(cPagina,1,8)
	   cRet := cData+'*'+cHora
	Else
	   cRet := "Erro"
	Endif
Return cRet

********************************************************************************
Function VqMes(cText)
	Local cNMes
	Do Case
	   Case cText=="janeiro"
	        cNMes := "01"
	   Case cText=="fevereiro"
	        cNMes := "02"
	   Case cText=="março"
	        cNMes := "03"
	   Case cText=="abril"
	        cNMes := "04"
	   Case cText=="maio"
	        cNMes := "05"
	   Case cText=="junho"
	        cNMes := "06"
	   Case cText=="julho"
	        cNMes := "07"
	   Case cText=="agosto"
	        cNMes := "08"
	   Case cText=="setembro"
	        cNMes := "09"
	   Case cText=="outubro"
	        cNMes := "10"
	   Case cText=="novembro"
	        cNMes := "11"
	   Case cText=="dezembro"
	        cNMes := "12"		
	EndCase
Return cNMes
[]´s

Feliz Natal e Ano Novo.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Amigos, vejam também:

Código: Selecionar todos

*******************************************
* Compilar: hbmk2 arquivo.prg -lhbct
*******************************************

function Main()
  SetMode(25,80)

  cDataHora:= GetDataTimeNtp( "200.160.7.186")
 
/*****************************************
* Outros IP:
* 200.160.7.186
* 200.186.125.195
* 200.20.186.76
* 201.49.148.135
* 200.160.7.193
* 200.160.0.8
* 200.189.40.8
* 200.192.232.8
* 204.123.2.72
* 31.28.161.71
*****************************************/

  ? "Data: ",Left(cDataHora,10)
  ? "Hora: ",Right(cDataHora,8)

return nil

******************************************
function GetDataTimeNtp( cSeverNtp )
Local cRet, cDateTime:= Alltrim(GETNTPDATE( cSeverNtp ))
cRet:=SUBS(cDateTime,9,2)+"/"+StrZero(CtoMonth(SUBS(cDateTime,5,3)),2)+"/"+Alltrim(Right(cDateTime,5))+;
      SUBS(cDateTime,11,9)
Return (cRet)


*****************************************
#pragma BEGINDUMP

#include <hbapi.h>
#include <winsock.h>
#include <time.h>

#define MAXLEN 1024

HB_FUNC( GETNTPDATE )
{
   char * hostname = ( char * ) hb_parc( 1 );
   unsigned char msg[ 48 ] = { 010, 0, 0, 0, 0, 0, 0, 0, 0 };   // the packet we send
   unsigned long buf[ MAXLEN ]; // the buffer we get back
   struct sockaddr_in server_addr;
   int  s;  // socket
   WSADATA wsa;
   struct timeval timeout;
   fd_set fds;
   time_t tmit;
             
   WSAStartup( 0x101, &wsa );    

   s = socket( PF_INET, SOCK_DGRAM, getprotobyname( "udp" )->p_proto );

   memset( &server_addr, 0, sizeof( server_addr ) );
   server_addr.sin_family = AF_INET;
   server_addr.sin_addr.s_addr = inet_addr( hostname );
   server_addr.sin_port = htons( 123 ); // ntp port
       
   sendto( s, msg, sizeof( msg ), 0, ( struct sockaddr * ) &server_addr, sizeof( server_addr ) );
       
   FD_ZERO( &fds );
   FD_SET( s, &fds );
   timeout.tv_sec = 10;
   timeout.tv_usec = 0;
         
   if( select( 0, &fds, NULL, NULL, &timeout ) )
   {      
      recv( s, ( void * ) buf, sizeof( buf ), 0 );

      tmit = ntohl( buf[ 10 ] );
      tmit-= 2208988800U;
   }  
   else
      MessageBox( 0, "can't read from NTP server", "ok", 0 );      
       
   WSACleanup();

   hb_retc( ctime( &tmit ) );  
}

#pragma ENDDUMP
Abraços,
Anexos
demo.prg
Exemplo de consulta Data e Hora em servidor NTP
(2.21 KiB) Baixado 245 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

Nobre amigo Toledo tentei compilar seu exemplo deu os seguintes erros


C:\hb30\Fontes\NTP>hbmk2 ntp.prg -lhbct
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'ntp.prg'...
Lines 74, Functions/Procedures 2
Generating C source output to 'C:\Users\ADMCAS~1\AppData\Local\Temp\hbmk_vqqnz5.dir\ntp.c'... Done.
C:\Users\ADMCAS~1\AppData\Local\Temp\hbmk_vqqnz5.dir\ntp.c:
Error E2046 ntp.prg 25: Bad file name format in include directive
Error E2046 ntp.prg 26: Bad file name format in include directive
Error E2046 ntp.prg 27: Bad file name format in include directive
Warning W8065 ntp.prg 33: Call to function 'hb_parc' with no prototype in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 36: Undefined structure 'sockaddr_in' in function HB_FUN_GETNTPDATE
Error E2449 ntp.prg 36: Size of 'server_addr' is unknown or zero in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 36: Undefined structure 'sockaddr_in' in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 36: Undefined structure 'sockaddr_in' in function HB_FUN_GETNTPDATE
Error E2449 ntp.prg 36: Size of 'server_addr' is unknown or zero in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 38: Undefined symbol 'WSADATA' in function HB_FUN_GETNTPDATE
Error E2379 ntp.prg 38: Statement missing ; in function HB_FUN_GETNTPDATE
Error E2140 ntp.prg 39: Declaration is not allowed here in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 39: Undefined structure 'timeval' in function HB_FUN_GETNTPDATE
Error E2449 ntp.prg 39: Size of 'timeout' is unknown or zero in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 39: Undefined structure 'timeval' in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 39: Undefined structure 'timeval' in function HB_FUN_GETNTPDATE
Error E2449 ntp.prg 39: Size of 'timeout' is unknown or zero in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 40: Undefined symbol 'fd_set' in function HB_FUN_GETNTPDATE
Error E2379 ntp.prg 40: Statement missing ; in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 41: Undefined symbol 'time_t' in function HB_FUN_GETNTPDATE
Error E2379 ntp.prg 41: Statement missing ; in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 43: Undefined symbol 'wsa' in function HB_FUN_GETNTPDATE
Warning W8065 ntp.prg 43: Call to function 'WSAStartup' with no prototype in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 45: Undefined symbol 'PF_INET' in function HB_FUN_GETNTPDATE
Error E2451 ntp.prg 45: Undefined symbol 'SOCK_DGRAM' in function HB_FUN_GETNTPDATE
Warning W8065 ntp.prg 45: Call to function 'getprotobyname' with no prototype in function HB_FUN_GETNTPDATE
Error E2288 ntp.prg 45: Pointer to structure required on left side of -> or ->* in function HB_FUN_GETNTPDATE
Warning W8065 ntp.prg 45: Call to function 'socket' with no prototype in function HB_FUN_GETNTPDATE
Error E2450 ntp.prg 47: Undefined structure 'sockaddr_in' in function HB_FUN_GETNTPDATE
Error E2228 ntp.prg 47: Too many error or warning messages in function HB_FUN_GETNTPDATE
*** 26 errors in Compile ***
hbmk2: Erro: Executando compilador C/C++. 1
bcc32.exe -c -q -d -6 -O2 -OS -Ov -Oi -Oc -tWM -w -Q -w-sig- -nC:\Users\ADMCAS~1\AppData\Local\Temp\hbmk_vqqnz5.dir -IC:\BORLAND\BCC55\Include -IC:\HB30\include C:\Users\ADMCAS~1\AppData\Local\Temp\h
bmk_vqqnz5.dir\ntp.c

C:\hb30\Fontes\NTP>
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Josivan, copie o arquivo que acabei de anexar na minha mensagem anterior e faça um teste com ele.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

Amigo toledo neste segundo arquivo que esta em anexo
ele compilou mais deu essa mensagem
mesmo assim gerou o execultavel que trava quando clicado
C:\hb30\Fontes\NTP>hbmk2 demo.prg -lhbct
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'demo.prg'...
Lines 89, Functions/Procedures 2
Generating C source output to 'C:\Users\ADMCAS~1\AppData\Loca
C:\Users\ADMCAS~1\AppData\Local\Temp\hbmk_79y0hp.dir\demo.c:
Warning W8079 demo.prg 67: Mixing pointers to different 'char
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Josivan, eu aqui uso o MingW e não o BCC, então não sei dizer qual o motivo deste erro. Mas mesmo assim, tentei compilar com o BCC, onde ocorreu a mesma mensagem na compilação:
C:\programa\forum\sntp>hbmk2 demo.prg -lhbct
hbmk2: Processando op‡äes do ambiente: -compiler=bcc
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'demo.prg'...
Lines 89, Functions/Procedures 2
Generating C source output to 'C:\DOCUME~1\TOLEDO~1\CONFIG~1\Temp\hbmk_0h4ims.di
r\demo.c'... Done.
C:\DOCUME~1\TOLEDO~1\CONFIG~1\Temp\hbmk_0h4ims.dir\demo.c:
Warning W8079 demo.prg 67: Mixing pointers to different 'char' types in functio
n HB_FUN_GETNTPDATE
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Ao executar o arquivo, é apresentado a data e hora, mas ocorre o seguinte erro:
C:\programa\forum\sntp>demo

Data: 19/12/2013
Hora: 17:35:08

Unrecoverable error 6005: Exception error:

Exception Code:C0000005
Exception Address:00481176
EAX:011D0004 EBX:011D3E98 ECX:011D0000 EDX:023A0008
ESI:00499078 EDI:0048C0D2 EBP:0012FF0C
CS:EIP:001B:00481176 SS:ESP:0023:0012FF08
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010202
CS:EIP: F6 02 01 74 2A 8B 0A 83 E1 FC 83 C1 04 01 08 3B
SS:ESP: 00DD20A0 0012FF18 00481114 011D3E98 0012FF24 00480A15 011D3E98 0012F
F5C 00488F12 011D3E98 00000002 0048C0FC 00488A2B 00000000 0048C13C 00000000
...
Segue em anexo o arquivo compilado com o Harbour 3.0 e MingW.

Abraços,
Anexos
demo.zip
(524.39 KiB) Baixado 183 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Fiz um outro teste com o Harbour 3.0 e BCC, colocando o parâmetro -gui na compilação:

hbmk2 demo.prg -lhbct -gui

E executou sem erro algum.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Amigos, favor desconsiderar a minha mensagem anterior... o erro continua ao executar o programa!

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

sim esse seu ta funcionando corretamente , eu sou iniciante no harbour ai fico meio perdido tipo bcc mingui
vou dar uma pesquisada pra obter mais conhecimentos sobre
mais de momento muito obg
com essa funçao agora depois vem outra do tipo ela so vai acionar essa se verificar que o computador esta com internet entendeu?
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

explicando melhor o que eu preciso é

o servidor ntp (ja feito pelo amigo toledo)
verificar se o computador esta conectado a internet
se estiver iniciar a funçao sntp (que o amigo toledo fez)

porque estou criando um sistema que depende de data e horas sempre atualizados e que nao sofra interferencia de usuarios mal intencionados
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Servidor NTP para harbour 3.0

Mensagem por fladimir »

O exemplo q passei não precisa do Minigui, ele foi baseado mas do jeito q foi feito basta linkar junto a lib do harbour HBWIN.

E acredito q resolve teu problema.

[]'s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Servidor NTP para harbour 3.0

Mensagem por Toledo »

Josivan Nascimento escreveu:fico meio perdido tipo bcc mingui
Só uma observação, em uma das minhas mensagens acima eu falei que não uso o BCC e sim o MingW, eu não falei nada sobre MiniGui.

Então o código que passei pode ser compilado apenas com o Harbour e a LIB hbct (por causa da função CtoMonth).

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Servidor NTP para harbour 3.0

Mensagem por Nascimento »

desculpe foi erro na digitaçao

o problema que ao compilar meu fonte com o MingW retorna varios erros ja com o bcc compila redondinho
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder