Gemeinsame Zeitbasis im Netzwerk?

Für allgemeine Fragen zur Programmierung mit PureBasic.
thkais
Beiträge: 9
Registriert: 29.11.2004 09:42

Gemeinsame Zeitbasis im Netzwerk?

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

NTP kennst du, oder?
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Ne Sekretärin kennst du doch auch, oder?
Einfach Zettel in die Hand und losschicken.
:bounce:
1. Win10
PB6.1
thkais
Beiträge: 9
Registriert: 29.11.2004 09:42

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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]
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Könnte man die Uhrzeit nicht per String senden?
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Ich meinte jetzt um es einfach zu machen. Ohne komplizierte Codes. Für Anfänger :wink:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

net time /set \\domain ?
Antworten