Griever: Atomzeit via HTTP abrufen

Hi.

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.

Ich möchte nämlich gerne eine Abfrage der Atomzeit in einem kleinen Programm einbauen (VB.NET) und ich habe keinen Plan, wie man das NTP-Protokoll nutzen soll. Da ich über HTTP jedoch mehr plan hab, wärs gut, wenns sowas gäbe.

Aber ich weiß leider auch nicht, nach was ich bei google suchen soll. NTP-Server ist das einzigste schlagwort, was ich hätte. wenn ich Atomzeit eingebe, lande ich auf einem Shop. Wenn ich Aktuelle Atomzeit suche, lande ich bei irgendwelchen Seiten, die die Atomzeit via JavaScript zählen lassen und so ne kacke, was mich nicht weiterbringt.

Ich würde mich sehr freuen, wenn mir jemand wenigstens einen gängigen HTTP-Server sagt, der mir NUR die Atomzeit zurückgibt. (nich irgendwelche HTML-tags und so)

Vielen vielen dank.

MFG
Griever

  1. Hi!

    Aber ich weiß leider auch nicht, nach was ich bei google suchen soll.

    Vielleicht nach Time-Server und HTTP?

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Hallo,

    Ich möchte nämlich gerne eine Abfrage der Atomzeit in einem kleinen Programm einbauen (VB.NET) und ich habe keinen Plan, wie man das NTP-Protokoll nutzen soll. Da ich über HTTP jedoch mehr plan hab, wärs gut, wenns sowas gäbe.

    kann deine VB.net-Umgebung denn HTTP-Header auswerten? Denn der Wiki-Eintrag über NTP verweist nicht nur auf die diversen technischen Artikel, auf denen NTP aufbaut, sondern auch auf eine Variante, um per HTTP die exakte Uhrzeit zu bekommen.

    Aber ich weiß leider auch nicht, nach was ich bei google suchen soll.

    Ich habe einfach in Widipedia unter dem Schlagwort "NTP" nachgesehen, und bin damit sofort auf den Eintrag zum gleichnamigen Protokoll gestoßen.

    So long,
     Martin

    --
    Ist die Katze gesund,
    freut sich der Hund.
  3. 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".
  4. 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.

    Wozu? Dein Server hat eine wunderbare interne Uhr, die er, sofern durch ein passendes, NTP nutzendes Programm gestellt, so perfekt mit der Atomuhr synchronisieren kann, wie man es via Netzwerk überhaupt hinkriegen kann.

    Unter Windows ist das "alles mit dabei", der Admin muß es nur konfigurieren. Unter Linux installiert sich der ntpd eigentlich auch fast wie von selbst. Für OSX nehme ich ähnliches an. Allen Betriebssytemen gemeinsam ist, dass sie am Ende einen zuverlässigen Zeitserver benötigen. http://www.ntp.org/ bietet da eine reichhaltige Auswahl eines großen Pools an NTP-Servern, auf die die Last per DNS-Rotation verteilt wird. Um sich also mit z.B. vier Timeservern zu synchronisieren, trägt man einfach vier anonyme Domainnamen in die Konfiguration des ntpd ein (Beispiel für deutsche Timeserver).

    Dieses Angebot ist nach meiner Erfahrung extrem zuverlässig - die Uhren aller SELF-Server werden damit synchronisiert.

    Wenn erstmal die lokale Serveruhr genau geht (die Zeitsoftware integriert auch direkt eine Kompensation der Gangabweichung der internen Uhr, so dass die ausgelesene Zeit wirklich so konstant und genau wie möglich ist), ist das Ermitteln der "genauen" Uhrzeit nur noch ein Kinderspiel - und dieses Vorgehen hat den Vorteil, dass nicht nur diese eine Webseite die genaue Zeit hat, sondern alle zeitbezogenen Vorgänge innerhalb des Servers ebenfalls, beispielsweise Dateidatum, Logfile-Zeiten etc.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."