Optional: Implementieren Sie das Protokoll wie angegeben: Alle Nachrichten, die über den UDP-Channel verschickt werden, enthalten Nachrichten der Form " ", wobei die Parameter durch Leerzeichen getrennt werden. Die Parmeter sind wie URLs kodiert (Spaces werden durch "%20" ersetzt, % durch "%25") PlanetName := [a-zA-Z0-9\-_]+ NodeName := [a-zA-Z0-9\-_]+.prefix(8, hex(sha1(ip:port))) GoodName := [a-zA-Z0-9\-_]+ Messages: HELLO Nachbar wird der Name der Absendernode mitgeteilt, der Nachbar teilt seinen Namen via OLLEH als Antwort mit. OLLEH Antwort auf Hello, Mitteilung des Namens , PEERS # hopM (0 <= M < dst) schickt die Nachricht unverändert an hopM+1 weiter (# markiert die Kante) Hop dst antwortet mit SREEP # SREEP # # Mitteilung über die Peers von SRC als Antwort auf PEERS Beispielskommunikation: ERDE -> MARS : HELLO ERDE.a4ea4cbc MARS -> ERDE : OLLEH MARS.0f4ddfae ALPHA-Z -> MARS : HELLO ALPHA-Z.6d95057d MARS -> ALPHA-Z : OLLEH MARS.0f4ddfae ERDE -> MARS : PEERS ERDE.a4ea4cbc # MARS.0f4ddfae MARS -> ERDE : SREEP MARS.0f4ddfae # ERDE.a4ea4cbc # ERDE.a4ea4cbc ALPHA-Z.6d95057d ERDE -> MARS : PEERS ERDE.a4ea4cbc # MARS.0f4ddfae ALPHA-Z.6d95057d MARS -> ALPHA-Z : PEERS ERDE.a4ea4cbc MARS.0f4ddfae # ALPHA-Z.6d95057d ALPHA-Z -> MARS : SREEP ALPHA-Z.6d95057d # MARS.0f4ddfae ERDE.a4ea4cbc # MARS.0f4ddfae MARS -> ERDE : SREEP ALPHA-Z.6d95057d MARS.0f4ddfae # ERDE.a4ea4cbc # MARS.0f4ddfae Messages: GOODS # .. src Teilt teilt dst die Liste bekannter Güter mit, wobei TTL für jeden Eintrag um 1 dekrementiert wird dst Setzt Güter-Timer von src zurück. dst Setzt die Güter-Liste für src auf den Inhalt des Paketes dst prüft Güter-Timer aller Nachbarn: falls Güter-Timer > 30sec wird GOODS an den Nachbarn geschickt. sobald aktuelle Nachrichten (< 30sec vor Empfang von Goods) aller Nachbarn vorliegen, wird SDOOG als Antwort ausgesandt SDOOG # .. src Teilt teilt dst die Liste bekannter Güter mit, wobei TTL für jeden Eintrag um 1 dekrementiert wird Berechnung der Liste bekannter Güter: Vereinigung über die Liste der Güter, die von einer Node selbst angeboten werden mit den Güter-Listen, die von Nachbarn empfangen wurden, TTL ist das maximum der TTLs Verwendung der TTL: TTL wird von jedem handelen Planeten für jedes Gut frei gewählt. Gibt an wie weit das Produkt sichtbar sein soll. Keine weitere Weiterleitung bei TTL 0, sodass nicht mehr aktive Produkte irgendwann vom Markt verschwinden. Beispielskommunikation: # Angebote: # Erde: Holz TTL 10 # Gruene_Erbsen TTL 1 # Mars: Deuterium TTL 3 # Pangalactic_Gargleblast TTL 1 # Alpha-Z: Pangalactic_Gargleblast TTL 5 ERDE -> MARS : GOODS ERDE.a4ea4cbc # Holz.10 Gruene_Erbsen.1 MARS -> ALPHA-Z : GOODS MARS.0f4ddfae # Holz.9 Deuterium.3 Pangalactic_Gargleblast.1 ALPHA-Z -> MARS : SDOOG ALPHA-Z.6d95057d # Holz.8 Deuterium.2 Pangalactic_Gargleblast.5 MARS -> ERDE : SDOOG MARS.0f4ddfae # Holz.9 Deuterium.3 Pangalactic_Gargleblast.4 Kostenabfrage: -------------- Nur Raumschiffe koennen Kosten Abfragen. Welche Waren existieren, fragen die Raumschiffe analog zu den Planeten ueber GOODS ab. COST # # TSOC # # # # Analog zu PEERS wird hier die Anfrage eines Preises entlang der einzelnen Hops geschickt und die Antwort auf selbem Wege zurueck. Das erste gibt an, zu welchem Preis der Planet verkauft, das zweite, zu welchem Preis er ankauft. gibt an wieviel Tonnen verfügbar sind. Sollte ein Planet nicht an/verkaufen, steht statt der Zahlen ein _ Beispiel: PlanetExpress -> MARS : COST PlanetExpress.a4ea4cbc # MARS.0f4ddfae ALPHA-Z.6d95057d # Pangalactic_Gargleblast MARS -> ALPHA-Z : COST PlanetExpress.a4ea4cbc MARS.0f4ddfae # ALPHA-Z.6d95057d # Pangalactic_Gargleblast ALPHA-Z -> MARS : TSOC ALPHA-Z.6d95057d # MARS.0f4ddfae PlanetExpress.1f2938ad # Pangalactic_Gargleblast # 70 4 # _ MARS -> PlanetExpress : TSOC ALPHA-Z.6d95057d MARS.0f4ddfae # PlanetExpress.1f2938ad # Pangalactic_Gargleblast # 70 4 # _