4100 Netzwerk Token Ring Netzwerk
Kategorie:Informatik
Klasse:schwer
Eingabe:Siehe Spezifikation
Ausgabe:Siehe Spezifikation
Abzugebende Files: Netzwerk.txt, Main.java, Netzwerk/*.java , 1027.txt, 1102.txt

Kurzbeschreibung:

Ein Token Ring Netzwerk soll modelliert werden. Informationspakete werden in diesem Netzwerk an einen Zielrechner weitergeleitet und verarbeitet.

Allgemeine Hinweise:

Aufgabenstellung:

In einem einfachen LAN (Local Area Network) können vier Arten von Geräte vorkommen: Workstations, Drucker (Printserver), Fileserver und Knoten (Node), die Informationspakete (Packet) senden und empfangen. Alle Geräte sind untereinander als Token-Ring (kreisförmig) verschaltet.

Dieses Netzwerk soll durch ein Java-Programm modelliert werden. Im einzelnen soll gelten:

  • Jedes Gerät des Netzwerkes kann erzeugt werden: Ihm kann ein Name und ein Nachfolger zugeordnet werden, sodaß alle Geräte im Netz einen Kreis bilden.
  • Pakete können erzeugt werden: Ihnen kann als Sender bzw. Empfängeradresse der Name eines Gerätes im Netzwerk zugewiesen werden sowie ein (geeigneter) Inhalt.
  • Ein Knoten (K) sendet empfangene Pakete im nächsten Zeitschritt lediglich weiter.
  • Eine Workstation (W) verhält sich wie ein Knoten, kann jedoch zusätzlich neue Pakete erzeugen und in das Netz einspeisen, indem sie das Paket im nächsten Zeitschritt ihrem Nachfolger sendet. Ein Paket, welches einmal vollständig im Netz rotiert ist (kein Adressat gefunden), wird von dieser Workstation sofort beim Empfang entfernt.
  • Ein Fileserver (F) verhält sich wie ein Knoten, außer er empfängt ein Paket, dessen Adressat er ist. In diesem Fall speichert der Fileserver den Inhalt des Pakets (in einer Datei) im nächsten Zeitschritt.
  • Ein Printserver (P) verhält sich wie ein Knoten, außer er empfängt ein Paket, dessen Adressat er ist. In diesem Fall verarbeitet er den Inhalt des Pakets im nächsten Zeitschritt.
  • Implementieren Sie die Klassen: Packet, Node, Workstation, Fileserver und Printserver.

    Das zu modellierende Token Ring Netzwerk muß aus mindestens 3 Knoten (Nodes, Fileserver, Printserver oder Workstation) bestehen. Zumindest einer der Knoten muß eine Workstation sein, an dieser wird die Nachricht in das Netzwerk zum Zeitpunkt 0 erzeugt und im nächsten Schritt weitergeleitet. (zum Zeitpunkt 2 befindet sich dieses Paket dann im darauffolgenden Knoten.)

    Die Aufgabe besteht nun darin, ein in diesem Netzwerk rotierendes Paket zu beobachten bzw. den Zustand des Netzwerkes abzufragen. Der Aufbau des Netzwerkes wird in den Eingabedaten beschrieben, desweiteren wird angenommen das n diskrete Zeitschritte bereits vergangen sind. Folgende Abfragen sollen möglich sein:

  • w - where: gibt den Namen des Knoten aus, an dem sich das Paket gerade befindet, "FINISHED" falls es von dem adressierten Print/Fileserver bereits verarbeitet wurde, "INVALID" falls es von der sendenden Workstation entfernt wurde.
  • p - printed: gibt die Anzahl der Zeitschritte bis zur Verarbeitung des Packetes an dem adressierten Printserver aus, 0 falls es bereits verarbeitet wurde bzw. die negierte Anzahl der Zeitschritte bis zum Eintreffen des Packetes an der sendenden Workstation.
  • s - stored: gibt die Anzahl der Zeitschritte bis zum Abspeichern des Packetes an dem adressierten Fileserver aus, 0 falls es bereits gespeichert wurde bzw. die negierte Anzahl der Zeitschritte bis zum Eintreffen des Packetes an der sendenden Workstation.
  • q,Rechnername - query: gibt den Inhalt des Packets am angeführten Rechner aus, ansonsten "EMPTY".

    Eingabedaten:

    Lesen Sie einen String ein, der aus Knoten, Packet, Zeit, und Abfrage, jeweils durch ein Leerzeichen getrennt, besteht.

    Ein Knoten besteht aus einem Typ (K,W,F,B) gefolgt von dem Rechnername. Der Rechnername muß zwischen 3 und 10 Zeichen lang sein (inklusive) und mit einem Großbuchstaben beginnen. Mehrere Knoten sind durch "," getrennt, die Anzahl der Knoten liegt wiederum zwischen 3 und 10 (inklusive). Ein Knoten des Netzwerkes muß vom Typ Workstation sein. Die Reihenfolge der Knoten im Netzwerk ist durch die Reihenfolge im String bereits vorgegeben, vergessen Sie aber nicht daß es sich bei dem Netzwerkmodell um eine Ringstruktur handelt.

    Eine Packet besteht aus zwei Rechnernamen (Sender, Empfänger) und dem Inhalt. Der Rechnername des Senders muß existieren und vom Typ Workstation sein. Die Läge des Inhaltes liegt zwischen 1 und 10 Zeichen (inklusive), es besteht nur aus Groß und Kleinbuchstaben. (keine Leerzeichen, Sonderzeichen, Zahlen). Um das Modell zu vereinfachen enthalten die Eingabedatensätze nur ein einziges Paket.

    Die Zeitangabe kann zwischen 1 und der Knotenanzahl+1 liegen, diese soll die Anzahl der vergangenen Zeitschritte seit der Erzeugung des Pakets darstellen. Da bei der Simulation mit diskreten Zeitschritten gearbeitet wird muß diese ganzahlig sein. Wählen Sie dazu selbst einen geeigneten Datentyp aus.

    Eine Abfrage muß aus einem der vorher beschriebenen 4 Befehlen w,p,s oder q (gegebenenfalls mit Angabe des Rechnernamens nach einem Komma) bestehen.

    Ausgabedaten:

    Bei korrekten Eingabesätzen soll Ihr Programm die in der Abfrage geforderten Berechnungen durchführen und das Ergebnis ausgeben. Geben Sie am Ende einen Zeilenvorschub aus.

    Fehlerbehandlung:

    Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

    Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

    Wenn der Eingabestring nicht den Bedingungen genügt, so soll Ihr Programm die Fehlermeldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

    Beispiele:

    Eingabedaten
    KAnton,WFritz,KEdi Fritz,Bert,TEXT 2 q,Edi

    KAnton,WFritz,KEdi Fritz,Bert,text 1 s

    KAnton,WFritz,KEdi,PDet,WConny,FBert Fritz,Bert,test 5 w

    Ausgabedaten
    TEXT

    -3

    FINISHED


    Testen:

    Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

    java Main < Netzwerk.i1 > Netzwerk.out1

    Das erzeugte File Netzwerk.out1 können Sie dann mit dem mitgelieferten Outputfile Netzwerk.o1 vergleichen.