Bearbeitung Prüfungsvorleistung für Verteilte Systeme
Go to file
Dimitrios 8aae306704 modify justfile (to start server with just server); improved Readme; modify server (log-output is now better structured); modify client 2026-04-13 14:42:07 +02:00
src modify justfile (to start server with just server); improved Readme; modify server (log-output is now better structured); modify client 2026-04-13 14:42:07 +02:00
.gitignore Copy src from Leuchter; create SyslogClient and Server; modify justfile and gitignore 2026-04-11 18:08:52 +02:00
README.md modify justfile (to start server with just server); improved Readme; modify server (log-output is now better structured); modify client 2026-04-13 14:42:07 +02:00
justfile modify justfile (to start server with just server); improved Readme; modify server (log-output is now better structured); modify client 2026-04-13 14:42:07 +02:00
pom.xml Copy src from Leuchter; create SyslogClient and Server; modify justfile and gitignore 2026-04-11 18:08:52 +02:00

README.md

PU 1: "Praktikum Service-Discovery"

Dieses Projekt wurde von der Gruppe D entwickelt: Antoniadis Dimitrios, Dexheimer Fynn, Corina Schmitt

Dieses Projekt implementiert einen Syslog-Server auf Basis von UDP gemäß dem RFC 5424 Standard. Es beinhaltet eine automatische Service-Discovery via Broadcast.

Hinweis: Um den Server zu testen, wird ein entsprechender Client benötigt. Das System setzt die installierten Technologien Java, Maven voraus. Just ist Optional.

Projektstruktur & Klassen

  • pom.xml: Maven-Konfigurationsdatei für Abhängigkeiten und Build-Prozess.
  • justfile: Automatisierungsskript für einfache Ausführung (just server).
  • vs.SyslogServer: Der Hauptdienst. Er startet zwei parallele Threads:
    • Syslog-Service: Empfängt Log-Nachrichten auf Port 514, validiert die Länge und trennt Metadaten optisch vom Nachrichteninhalt.
    • Discovery-Service: Antwortet auf Broadcast-Anfragen auf Port 8888, um Clients die Server-IP mitzuteilen.
  • vs.SyslogMessage: Kernklasse zur Erzeugung/Repräsentation standardkonformer Nachrichten (inkl. Header, Zeitstempel und Structured Data).
  • vs.AsciiChars / vs.StructuredData: Hilfsklassen zur Einhaltung der RFC-Spezifikationen.

Funktionsablauf (Service Discovery & Logging)

  1. Broadcast: Ein Client sendet ein UDP-Paket an die Broadcast-Adresse 255.255.255.255:8888.
  2. Antwort: Der Server empfängt den Suchruf und sendet ein Bestätigungs-Paket an den Client zurück.
  3. Identifikation: Der Client extrahiert die IP-Adresse des Servers aus dem Antwort-Paket.
  4. Logging: Der Client formatiert die Nachricht nach RFC 5424 und sendet sie direkt an den Server (Port 514).
  5. Verarbeitung: Der Server empfängt das Datenpaket, validiert die Länge, entfernt das Byte Order Mark (BOM) und trennt die RFC-Metadaten optisch vom eigentlichen Nachrichteninhalt für eine strukturierte Konsolenausgabe.

Ausführung

Stellen Sie sicher, dass Java, Maven und Just auf Ihrem System installiert sind.

1. Konfiguration für Linux/macOS

Da das justfile standardmäßig für die PowerShell optimiert ist, passen Sie bei der Nutzung von Unix-basierten Systemen bitte die erste Zeile im justfile an:

  • Ändern Sie set shell := ["powershell.exe", "-c"] zu set shell := ["sh", "-c"].

2. Wichtige Befehle

Nutzen Sie just, um die folgenden Aufgaben automatisiert auszuführen:

  • Kompilieren: just compile
  • Server starten: just server
  • Projekt aufräumen: just clean

Hinweis: Weitere Befehle für Tests oder die Javadoc-Generierung finden Sie direkt im justfile.