Avatar billede urth Nybegynder
17. april 2001 - 10:13 Der er 14 kommentarer og
1 løsning

Tidssynkronisering

Hej

Jeg har et problem med synkronisering af tid mellem 2 maskiner (de skal helst være ens). Jeg synkroniserer via filer, som jeg overfører fra den ene spand til den anden via ftp. Jeg benytter GetLocalTime på den maskine, hvor tiden læses fra og SetLocalTime på den maskine, hvor tiden skal sættes på. Jeg skal så tage højde for tidsforskelle, hvor jeg sætter en attribut til en værdi, der matcher det antal minutter, som tidsforskellen er.

Følgende er hvor jeg modtager filen på maskine nummer 2, og forsøger at lægge tidsforskellen til, eller trække den fra:

    SYSTEMTIME t;
    char tsfile[256];       
    strcpy(tsfile, \"c:\\\\inetpub\\\\ftproot\\\\TSDir\\\\\");
    strcat(tsfile, \"TimeStamp.txt\");

    fstream file;
    file.open(tsfile, ios::in | ios::binary | ios::nocreate);
    file.read((char*)&t, sizeof(t));
    file.close();

    FILETIME g;

        SystemTimeToFileTime(&t,&g);

    ULARGE_INTEGER h;
    h.HighPart = g.dwHighDateTime;
    h.LowPart = g.dwLowDateTime;
    h.QuadPart += (600000000 * crsdatas.timedif);
    g.dwHighDateTime = h.HighPart;
    g.dwLowDateTime = h.LowPart;

    FileTimeToSystemTime(&g, &t);
        SetLocalTime(&t);

Hvad er der galt i det?? Tiden bliver ikke rigtig?!?? - Eller er der nogle, der har en anden løsning?? (Jeg SKAL benytte fil-håndtering og c/c++)
Avatar billede limemedia Nybegynder
17. april 2001 - 10:22 #1
Hvor stor er forskellen mellem de to maskiner ???
Avatar billede urth Nybegynder
17. april 2001 - 10:25 #2
Det kan være forskelligt fra opsætning til opsætning.
Avatar billede limemedia Nybegynder
17. april 2001 - 10:27 #3
et skud er at forskellen er den tid selve \"transaktionen\" tager... Hvis forskellen er et par sekunder eller lignende er det realistisk, ellers er det noget andet... Det er lang tid siden jeg legede med C++ sidst...
Avatar billede urth Nybegynder
17. april 2001 - 10:28 #4
Jeg tester på to maskiner der står lige ved siden af hinanden.
Avatar billede limemedia Nybegynder
17. april 2001 - 10:32 #5
Hvor stor er forskellen gennemsnitlig ?
Avatar billede urth Nybegynder
17. april 2001 - 10:36 #6
Problemstillingen drejer sig ikke om forskellen i tidszoner, men om det at få tiden synkroniseret med den rigtige værdi + eventuel tidsforskel på en computer, ved brug af den tid, der findes på en anden computer. Dette skal gøres ved brug af GetLocalTime og SetLocalTime API kaldene, eller lignende.
Avatar billede hoejrup Nybegynder
17. april 2001 - 10:54 #7
Her er der en del kode eksempler, som du måske kan anvende til dit program.

http://www.pcprofile.com/timepiece.HTM#clocks

/per
Avatar billede urth Nybegynder
17. april 2001 - 11:00 #8
Udspecifikation tak :)
Avatar billede peter_m Nybegynder
17. april 2001 - 11:20 #9
Dette lyder som om det er på en windows spand du sætter tiden på men der findes faktisk en port på en spand jeg mener det er port 13 (services)der returener lokal tid på maskinen så behøver du ikke at flytte filer.

Du skal nok så bruge sockets men det er bare den nemme løsning.
Avatar billede urth Nybegynder
17. april 2001 - 11:29 #10
Det SKAL ske via en fil, og via FTP
Avatar billede hoejrup Nybegynder
17. april 2001 - 12:42 #11
SYSTEMTIME t;
char tsfile[256];       
strcpy(tsfile, \"c:\\\\inetpub\\\\ftproot\\\\TSDir\\\\\");
strcat(tsfile, \"TimeStamp.txt\");

fstream file;
file.open(tsfile, ios::in | ios::binary | ios::nocreate);
file.read((char*)&t, sizeof(t));
file.close();

FILETIME g;

    SystemTimeToFileTime(&t,&g);

ULARGE_INTEGER h;
h.HighPart = g.dwHighDateTime;
h.LowPart = g.dwLowDateTime;
h.QuadPart += (600000000 * crsdatas.timedif);
g.dwHighDateTime = h.HighPart;
g.dwLowDateTime = h.LowPart;

FileTimeToSystemTime(&g, &t);
    SetSystemTime(&t);

/per
Avatar billede urth Nybegynder
17. april 2001 - 12:46 #12
Jeg har fundet en løsning:

system(\"net time \\\\192.168.1.1 /set /yes\");

Den klarer det hele, og så er jeg fri for at køre via timestamp-fil og FTP.
Avatar billede urth Nybegynder
17. april 2001 - 12:48 #13
Undskyld!!!!
Avatar billede peter_m Nybegynder
17. april 2001 - 12:54 #14
Når så det skal ikke ske via FTP ???
Avatar billede urth Nybegynder
17. april 2001 - 12:56 #15
Jo... Det må i undskylde jeg var sku for hurtig der. pointene kan stadig skaffes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester