i

Ein Zeit-Client

Verbindung mit einem Zeit-Server

Ziel ist es, mit einem bereits existierenden Server eine Verbindung aufnehmen. Unter der URL "ptbtime1.ptb.de" bietet ein Zeitserver auf Port 123 seine Dienste an.

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
6.1.3.7.2
www.inf-schule.de/kommunikation/netze/module/anwendungsprotokolle/zeitclient
www.inf-schule.de/6.1.3.7.2

Rückmeldung geben