Alexander (HH): Atomzeit via HTTP abrufen

Beitrag lesen

Moin Moin!

ich bin vergebens auf der Suche nach einem Server, der die aktuelle Atomzeit in dd.nn.YYYY hh:mm:ss als normalen Text zurückgibt.

Warum so umständlich? Der DAYTIME-Service nach RFC 867 gibt Dir die Zeit "human readable", der TIME-Service nach RFC868 als 32-Bit-Integer mit Sekundenauflösung. Beide Ansätze benötigen keinen riesigen Protokoll-Overhead, sondern nur einfache Sockets.

Der Programmieraufwand für den TIME-Service ist trivial, siehe RFC:

* TCP-Socket zu Port 37 eines geeigneten Servers öffnen.
* 32 bit Integer (binär, also 4 Bytes, in Network Byte Order) lesen.
* Socket schließen.

Den Integer interpretiert man dann als C-Time, sprich: Sekunden seit Neujahr 1970 GMT. Typischerweise kümmert sich eine Funktion namens localtime darum, den Integer aufzubereiten.

Viel einfacher ist es allerdings dafür zu sorgen, dass der Rechner, auf dem die Software läuft, sich mit einer verläßlichen Zeitreferenz synchronisiert, und dann schlicht das Betriebssystem nach der aktuellen Uhrzeit fragt. Die akkuratue Uhrzeit auf dem Rechner zu haben hat noch nie geschadet.

NTP-Clients befinden sich im Lieferumfang aller größeren Betriebssysteme, natürlich bei so ziemlich allen Unix-Derivaten, definitiv bei auch bei Windows 2000 (versteckt), XP, Vista, und den entsprechenden Server-Varianten. MacOS X schleppt dank Unix-Abstammung ebenfalls einen NTP-Client/Server mit.

Du versuchst doch hoffentlich nicht, das noch einmal nachzuerfinden, unzuverlässiger und über HTTP? Da war schon jemand schneller: http://freshmeat.net/projects/htpd/.

Zeit-Synchronisation über das Internet ist nicht trivial, du mußt u.a. Laufzeiten berücksichtigen und die Zeit wesentlich genauer als im Sekundenraster erfassen. Der lokal laufende ntpd bzw. dessen Nachbau bei Windows kümmert sich um das ganze Zeugs, die Rechneruhr ist dann hinreichend synchron mit den Referenz-Atomuhren weltweit.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".