Programmieren eines Nachrichtensystems - Protokoll
Wir programmieren ein einfaches Nachrichtensystem, mit dem Personen Nachrichten an andere Personen schicken können:
Eine Nachricht besteht aus drei Teilen:
- dem Absender
- dem Empfänger
- dem Text, der übermittelt werden soll
Eine neue Nachricht wird vom Computer (Client) des Absenders an den Server geschickt. Dort wird die Nachricht gespeichert. Jeder Client kann bei dem Server anfragen, ob es auf dem Server neue Nachrichten für den Benutzer des Clients gibt. Falls eine neue Nachricht vorliegt, wird diese an den Client übermittelt und dort angezeigt.
Ein Protokoll zum Übermitteln von Nachrichten
Aufgabe 1
Mit Sockets können wir eine TCP-Verbindung zwischen einem Client und dem Server aufbauen und anschließend Zeichenketten übertragen. Der Server weiß nach dem Aufbau der Verbindung aber noch nicht, ob der Client eine neue Nachricht verschicken oder eine Nachricht abholen möchte. Außerdem muss geregelt werden, in welcher Reihenfolge die Teile einer Nachricht (Absender, Empfänger, Text) gesendet werden. Entwickle Ideen, wie man diese Probleme lösen könnte.
Aufgabe 2
Die folgenden Abbildungen zeigen einige Kommunikationsvorgänge zwischen einem Client und dem Server.
a) Beschreibe und vergleiche die beiden Kommunikationsvorgänge.
b) Wozu dienen die Doppelpunkte, die sich in den Anfragen und Antworten befinden?
In der vorherigen Aufgabe wurde ein Protkoll für ein Nachrichtensystem vorgestellt. (zur Erinnerung: Ein Protokoll ist die Gesamtheit aller Vereinbarungen, die Kommunikationsteilnehmer zur Abwicklung der Kommunikationsvorgänge treffen). Das Protokoll, das in der vorherigen Aufgabe vorgestellt wurde, ist im folgenden Kasten formell beschrieben. Unser Nachrichtensystem soll nach diesem Protokoll arbeiten:
- Der Client baut eine TCP-Verbindung zu dem Server auf.
- Der Client überträgt eine Anfrage. Dabei handelt es sich um eine utf-8-codierte Zeichenkette.
- Der Client sendet das byte 0, um dem Server das Ende der Anfrage zu signalisieren.
- Der Server bearbeitet die Anfrage und schickt eine Antwort an den Client. Dabei handelt es sich um eine utf-8-codierte Zeichenkette.
- Der Server sendet das byte 0, um dem Client das Ende der Antwort zu signalisieren.
- Server und Client schließen ihre Kommunikationssockets.
- Neue Nachricht versenden
- Anfrage: NEUE_NACHRICHT:{absender}:{empfänger}:{text der nachricht}
- Antwort: OK
- eine neue Nachricht vom Server holen
- Anfrage: HOLE_NACHRICHT:{empfänger}
- Antwort: {absender}:{empfänger}:{text der nachricht}
oder: KEINE_NEUE_NACHRICHT
Client und Server, die dieses Protokoll implementieren, befinden sich in der Anwendungsschicht des Schichtenmodells. Ein solches Protokoll wird auch als Protokoll der Anwendungsschicht bezeichnet.
Aufgabe 3
Auf einem Nachrichtenserver, der nach dem obenstehenden Protokoll arbeitet, sollen sich zunächst keine Nachrichten befinden. Folgende Anfragen werden an den Server gestellt. Gib jeweils die Anfrage des Clients und die Antwort des Servers an:
- Paul fragt bei dem Server an, ob neue Nachrichten vorliegen.
- Melanie schreibe an Paul: "Hallo Paul, wie geht es dir?"
- Paul fragt bei dem Server an, ob neue Nachrichten vorliegen.
Quellen
-
[1]: ueberblick-nachrichtensystem - Urheber: MIB - Lizenz: inf-schule.de
unter Verwendung von:
- Cliparts aus diagrams.net - Urheber: Unbekannt - Lizenz: Usage terms for diagrams created in diagrams.net