Seite 1 von 2

Gemeinsame Zeitbasis im Netzwerk?

Verfasst: 10.05.2006 19:59
von thkais
Moin allerseits,

ich habe vor, die Uhr mehrerer Rechner in einem Netzwerk zu synchronisieren. Prinzipiell würde mir das 1x am Tag reichen, z.B. beim Einloggen. Die Idee: Ein Rechner bekommt per DCF-77 die genaue Zeit, die anderen Rechner holen sich die Zeit bei diesem Rechner ab. Allein an der Durchführung fehlt es, ich habe keine Ahnung, wie ich per Netzwerk die Zeitinformation weitergeben könnte. Für Vorschläge / Hinweise wäre ich sehr dankbar.

Gruß
Thomas

Verfasst: 10.05.2006 20:01
von MVXA
NTP kennst du, oder?

Verfasst: 11.05.2006 04:22
von Toshy
Ne Sekretärin kennst du doch auch, oder?
Einfach Zettel in die Hand und losschicken.
:bounce:

Verfasst: 11.05.2006 18:24
von thkais
@Toshy: Danke, sehr witzig, aber nicht sehr hilfreich.

@MVXA: Google sagt mir, das sei ein Protokoll, um Rechner zu synchronisieren - eigentlich genau das, was ich brauche, so weit ein sehr guter Tipp.

Aber wie mach ichs in Purebasic? Meine Netzwerkkenntnisse beschränken sich auf das Verbinden / Trennen von Netzlaufwerken. Ich habe momentan irgendwie keinen Anfangspunkt... Werde erstmal weiter googlen.

Gruß
Thomas

Verfasst: 11.05.2006 18:27
von MVXA

Code: Alles auswählen

Global lSocket.l
Global lBuffer.l
Global lNTPTime.l

If InitNetwork()
    OpenConsole()

    lSocket = OpenNetworkConnection("ptbtime2.ptb.de", 37)
    If lSocket
        PrintN("Warte auf Zeit vom Server...")
        
        Repeat
            Select NetworkClientEvent(lSocket)
                Case #PB_NetworkEvent_Data
                    lBuffer = AllocateMemory(5)
                    If lBuffer
                        If ReceiveNetworkData(lSocket, lBuffer, 4) = 4                        
                            lNTPTime = (PeekB(lBuffer+0)&$FF) << 24
                            lNTPTime + (PeekB(lBuffer+1)&$FF) << 16
                            lNTPTime + (PeekB(lBuffer+2)&$FF) << 8
                            lNTPTime + (PeekB(lBuffer+3)&$FF)
                            
                            lNTPTime = AddDate(lNTPTime - 2840140800, #PB_Date_Year, 20)
                            lNTPTime = AddDate(lNTPTime, #PB_Date_Hour, 2)
                            
                            PrintN("Zeit vom Server empfangen!")
                            FreeMemory(lBuffer)
                        EndIf
                        
                        Break
                    EndIf
                    
                Default
                    Delay(1)
            EndSelect
        Until GetAsyncKeyState_(#VK_ESCAPE)
    
        If lNTPTime 
            PrintN(">" + FormatDate("%hh:%ii:%ss %dd.%mm.%yyyy", lNTPTime))
            PrintN("<" + FormatDate("%hh:%ii:%ss %dd.%mm.%yyyy", Date()))
            
            Repeat
                Delay(1)
            Until Asc(Inkey()) = 13
        EndIf
    Else
        PrintN("Verbindung fehl geschlagen.")
    EndIf
EndIf
Damit kannst du die Uhrzeit von einem NTP Server holen.[/code]

Verfasst: 11.05.2006 20:58
von Alves
Könnte man die Uhrzeit nicht per String senden?

Verfasst: 11.05.2006 20:59
von Zaphod
wozu, damit es nicht NTP kompatibel ist?

Das schöne an NTP ist, dass es das sowieso schon in praktisch jedem modernen betriebsystem gibt.

Verfasst: 11.05.2006 21:17
von Alves
Ich meinte jetzt um es einfach zu machen. Ohne komplizierte Codes. Für Anfänger :wink:

Verfasst: 11.05.2006 23:11
von Kaeru Gaman
Alves hat geschrieben:Ich meinte jetzt um es einfach zu machen. Ohne komplizierte Codes. Für Anfänger :wink:
vom server string senden und auf den clients empfangen und zeit nach string angleichen ist auch nicht unkomplizierter....

Verfasst: 11.05.2006 23:25
von edel
net time /set \\domain ?