Entwickler-Ecke
Internet / Netzwerk - Uhrzeit auf Rechner im Netz übertragen
Rainer Brechtken - Di 13.06.06 08:36
Titel: Uhrzeit auf Rechner im Netz übertragen
Grüß Euch !
Ich habe folgendes Problem, ich möchte von einem Rechner aus die lokale Zeit auf mehrere über TCP/IP vernetzte Rechner übertragen. Geht das mit IDTime ? Es wäre schön wenn mir einer weiterhelfen könnte, vielleicht sogar mit einem kleinen Beipielprogramm.
Übrigens ein tolles Forum hier...
Rainer
Kroko - Di 13.06.06 08:42
Ich nehme dazu kein Delphi, sondern das Anmeldescript für jeden Rechner vom Server
in dem steht:
net time \\server /set /yes
Rainer Brechtken - Di 13.06.06 09:30
Danke für deinen Hinweis, aber soweit ich net time kenne holt sich doch net time die zeit von einem anderen Rechner oder ? Ich würde aber gerne von einen Rechner aus weitere Rechner syncronsieren, und das mit einem Timer alle 10 Minuten aktualisieren...
Gruß
Rainer
Kroko - Di 13.06.06 10:11
Rainer Brechtken hat folgendes geschrieben: |
Danke für deinen Hinweis, aber soweit ich net time kenne holt sich doch net time die zeit von einem anderen Rechner oder ?
|
Naja, für "Server" setzt Du Deinen Rechnernamen ein!
| Zitat: |
Ich würde aber gerne von einen Rechner aus weitere Rechner syncronsieren, und das mit einem Timer alle 10 Minuten aktualisieren...
|
Ist alle 10 Minuten nicht übertrieben?
Ich aktualisiere meinen Server einmal am Tag per Internet und alle Rechner beim Einschalten per Anmeldescript!
Rainer Brechtken - Di 13.06.06 11:04
Ich will vermeiden, das sich die Rechner mehr als eine Sekunde voneinander entfernen....
alias5000 - Di 13.06.06 13:07
Dazu brauchen Sie aber sicher weit länger als 10 Minuten. Du solltest das eher an jedem Systemstart machen, da dort die Uhrzeit auf grund leerer Mainboard-Batterie die Uhrzeit stehen geblieben sein könnte. Das sollte sicher langen.
Gruß alias5000
Narses - Di 13.06.06 13:13
Moin!
Um mal Zahlen in die Diskussion zu bringen: AFAIK ist die typische Genauigkeit einer PC-Uhr 5ppm. Also geht (eine nicht defekte) PC-Uhr in 1.000.000 Sekunden um 5 Sekunden falsch. Entsprechende Zeitbezüge für Aktualisierungen lassen sich daraus dann ja ableiten. ;)
cu
Narses
Rainer Brechtken - Di 13.06.06 13:17
Soweit die Theorie, allerdings habe ich als praktische Erfahrung bei dem Betrieb von 4 Rechner nach 8 Stunden Laufzeit Abweichungen bis zu 6 Sekunden.. und die will ich auf alle Fälle vermeiden...
Gruß
Rainer
matze - Di 13.06.06 14:35
das kannst du mit den INDYs machen.
Da gibts Time Komponenten, die dir die PC Uhr mit einem Server im Internet abgleichen.
Es gibt auch Komponenten, die einen solchen Server bereitstellen.
Rainer Brechtken - Di 13.06.06 15:01
Hallo Matze,
ein Internet server muß es gar nicht sein, es reicht wenn alle Rechner die gleiche Uhrzeit aufweisen. Hast Du eventuell Beispielcode für ein Setzen der Rechnerzeit mit Hilfe von Indy ?
Besten Gruß
Rainer
matze - Di 13.06.06 15:14
nimm die INDY SNTP (glaub ich, dass die so heißt, ich hab kein Delphi da), die mit der Armbanduhr im Icon.
Setz den Host z.b. pool.ntp.org und ruf dann die methode syncTimeauf. Fertig.
Das ganze gibt es dann auch als Server. Da musst du dir nur die Hilfe anschauen !
Rainer Brechtken - Mi 14.06.06 09:30
Ich komme leider mit der Hilfe nich weiter, ein Beispielcode wäre sehr hilfreich...
Rainer
matze - So 18.06.06 21:39
für was ? Client oder Server ?
Rainer Brechtken - Di 20.06.06 14:44
Hallo Matze,
ich würde gerne die lokale Zeit von Rechner 1 auf die Rechner 2,3,4,5 und 6 übertragen.
Gruß
Rainer
alias5000 - Di 20.06.06 14:50
Das ist klar, aber zeig uns doch schinmal deinen Ansatz (-code?). Dann können wir dir anhand dessen weiterhelfen
Gruß alias5000
Fighter#1 - Di 20.06.06 14:52
Am geschicktesten wäre es imho wenn auf Rechner 1 ein Server säße.
Dieser hat ne feste IP und kann somit ganz easy von den Clienten connected werden.
Du könntest, wenn du die Sockets nähmest, ganz einfach im OnConnect ereginis die Uhrzeit mit TimeToStr senden und bei deim Client mir TimeToDate wieder dechiffrieren und setzen.
Bsp:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Klient:
Irgendwo:
ClientSocket1.Host:='festeip'; ClientSocket1.Port:=2223; ClientSocket1.Open;
Deine procedure zum Uhrzeitsetzen(StrToTime(Socket.ReceiveText));
Server:
ServerSocket1.Port:=2223; ServerSocket1.Open;
ServerSocket1.Socket.Connections[ServerSOcket1.Socket.ActiveConnections-1].SendText(TimeToStr(TIme)); |
MfG Fighter#1
matze - Di 20.06.06 18:24
Entweder du machst alles selber, oder du nimmst die Indy Kompos TidTimeClient und TidTimeServer.
Für den Server:
Nimm einfach die TidTimeServer Komponente und setzt die Eigenschaft activeauf true.
Für den Client:
Nimm die TidTimeClient Komponente, setzt die Eigenschaft Hostauf die IP Adresse des Rechners mit dem Server auf.
Mit idTimeClient1.syncTime; kannst du dann die PC Uhr mit dem Server abgleichen.
Mit idTimeClient1.DateTime kommst du an die Zeit des Servers.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!