Bearbeitung Prüfungsvorleistung für Verteilte Systeme
Go to file
Dimitrios bbda1ceab5 modify README corina -> corinna 2026-04-13 19:22:58 +02:00
src modify SyslogServer improved comments 2026-04-13 19:17:40 +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 README corina -> corinna 2026-04-13 19:22:58 +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, Schmitt Corinna

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 und Maven voraus. Die Nutzung von Just ist optional und dient lediglich der vereinfachten Ausführung der Befehle.

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 und Maven auf Ihrem System installiert sind. Die Installation von Just wird empfohlen, ist jedoch optional.

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

Hinweise:

  • Weitere Befehle (z. B. für Tests oder Javadoc) finden Sie direkt im justfile.
  • Falls Sie Just nicht verwenden möchten, können die entsprechenden Maven-Befehle (z. B. mvn compile oder mvn exec:java...) direkt genutzt werden.