Sincronizar server novell a terminal

Flavio
17 de Julio del 2003
Tengo una aplicación en visual fox en la que debo hacer uso de algun servicio de netware (api) para sincronizar la hora de la terminal (PC) con la del servidor novell 5.0. Debe existir alguna funcion mas de bajo nivel que SYSTIME(). Si es posible alguien reponder esto y mostrar un ejemplo. Gracias desde patagonia.-

vidalsalfate
17 de Julio del 2003
a mi em paso Y JUSTO CON UN PROGRAMA EN FOXRPO
MANAGER....
LO QUE HICE FUE QUITAR EL CLIENTE NOVELL DESDE LA ESTACION E INSTALÉ EL CLIENTE DE WINDOWS PARA NETWARE....

Alex
17 de Julio del 2003
Existe una función que aplica pa lo que tu deseas (de hecho hay unas cuantas por la Internet).
Si el objetivo sincronizar todos los relojes de las PC en una LAN (independientemente del origen horario), quizas te sirva esta funcion.

* tcserver es el nombre del servidor con el

* que sincronizamos (i.e. \PC1)
* lparameter tcserver

*/ declaramos las funciones a utilizar
declare integer NetRemoteTOD in ;

netapi32 [email protected], [email protected]



declare RtlMoveMemory IN WIN32API as ;

CopyMemory [email protected], INTEGER, INTEGER



declare integer SetSystemTime in ;

kernel32 [email protected]

* conversión a UNICODE
lcserver = strconv(strconv(tcserver,1),5)+chr(0)
lnptr = 0
lctimeofday = replicate(chr(0),48)
lcsystemtime = space(0)

*/ tomamos la hora
nres = NetRemoteTOD(@lcserver,@lnptr)

local lnyear, lnmonth, lndayofweek, lnday,;

lnhour, lnminute, lnsecond,;

lnmillsecond
if nres = 0 then

=CopyMemory(@lctimeofday,;

@lnptr, 48)
lnyear = DWordtoNum(substr(;

lctimeofday,41,4))
lnmonth = DWordtoNum(substr(;

lctimeofday,37,4))
lndayofweek = DWordtoNum(substr(;

lctimeofday,45,4))
lnday = DWordtoNum(substr(;

lctimeofday,33,4))
lnhour = DWordtoNum(substr(;

lctimeofday,9,4))
lnminute = DWordtoNum(substr(;

lctimeofday,13,4))
lnsecond = DWordtoNum(substr(;

lctimeofday,17,4))
lcsystemtime =
NumtoWord(lnyear)+;

NumtoWord(lnmonth)+;

NumtoWord(lndayofweek)+;

NumtoWord(lnday) + ;

NumtoWord(lnhour)+;

NumtoWord(lnminute)+;

NumtoWord(lnsecond)+;

NumtoWord(0)



*/ colocamos la hora en el equipo local
nres = SetSystemTime(@lcsystemtime)
return nres # 0

else

? "No está trabajando" + space(5) +;

transform(nres)
endif
return



***************************
function DwordToNum
lparameter tcDWORD
local ln0,ln1,ln2,ln3
ln0=asc(subs(tcDWORD,1,1))
ln1=asc(subs(tcDWORD,2,1)) * (256)
ln2=asc(subs(tcDWORD,3,1)) * (256^2)
ln3=asc(subs(tcDWORD,4,1)) * (256^3)
return ln3 + ln2 + ln1 + ln0



**************************
function NumtoWord
lparameter tnNum
lcresult = chr(0)+chr(0)
if tnNum < (2^15 - 1) then

lcresult = chr(mod(;

tnNum,256))+chr(int(tnNum/256))
else

* no es un número válido
endif
return lcresult


Saludos