i

Ein Zeit-Client

Verbindung mit einem Zeit-Server

Heutzutage zeigen Smartphones und Computer die Uhrzeit in der Regel sekundengenau an, ohne dass man diese selbst einstellen muss. Sie nutzen dabei die Dienste von Zeitservern. Ein solcher Zeitserver bietet unter der URL "ptbtime1.ptb.de" auf Port 123 seine Dienste an. Ziel ist es, bei diesem Zeitserver das aktuelle Datum und die Uhrzeit zu erfragen.

Der folgende Python-Dialog zeigt, wie man ein Socket-Objekt erzeugt, das mit dem Zeitserver eine Verbindung aufnimmt und Daten von diesem Zeitserver empfängt.

>>> import socket
>>> c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> url = 'ptbtime1.ptb.de'
>>> port = 123
>>> request = '\x1b' + 47 * '\0' #Anfrage-Paket an den Zeitserver
>>> c.sendto(request.encode('utf-8'), (url, port))
>>> data = c.recvfrom(256)
>>> data[0][16:20]
b'\xe2\xff\x84\x11'

Aufgabe 1

(a) Probiere das selbst einmal aus.

(b) Der Client empfängt hier die Bytes b'\xe2\xff\x84\x11'. Führe die folgenden Operationen aus, um zu verstehen, was diese Bytes darstellen.

>>> list(b'\xe2\xff\x84\x11')
[226, 255, 132, 17]
>>> 226*256**3 + 255*256**2 + 132*256 + 17
3808396305

Die hier entstehende Zahl 3808396305 gibt die Anzahl der Sekunden an, die ab dem 1.1.1900 (0 Uhr) bis zur Anfrage an den Zeitserver vergangen sind. Überprüfe mit geeigneten Rechnungen, ob das stimmen kann.

(c) Schreibe eine Python-Funktion, die die aktuelle Zeit vom Zeitserver "ptbtime1.ptb.de" abfrägt und zurückgibt.

Suche

v
10.5.1.2
dev.inf-schule.de/rechnernetze/anwendung/internetdienste_sockets/zeitclient
dev.inf-schule.de/10.5.1.2
dev.inf-schule.de/@/page/qVBiyvpo085hLK7v

Rückmeldung geben