46 lines
2.9 KiB
Markdown
46 lines
2.9 KiB
Markdown
# 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** 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. |