Gemeinsame Zeitbasis im Netzwerk?
Gemeinsame Zeitbasis im Netzwerk?
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
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
@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
@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
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
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
vom server string senden und auf den clients empfangen und zeit nach string angleichen ist auch nicht unkomplizierter....Alves hat geschrieben:Ich meinte jetzt um es einfach zu machen. Ohne komplizierte Codes. Für Anfänger
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.