modify justfile to work without vs -> vs.classname; modiify SyslogClient & Server (improved comments and made the port variable a constant variable)
parent
b1c4fc0e8a
commit
824c41012e
2
justfile
2
justfile
|
|
@ -5,7 +5,7 @@ set shell := ["powershell.exe", "-c"]
|
|||
default:
|
||||
mvn clean compile test
|
||||
exec class +args="": compile
|
||||
mvn exec:java "-Dexec.mainClass={{class}}" "-Dexec.args={{args}}"
|
||||
mvn exec:java "-Dexec.mainClass=vs.{{class}}" "-Dexec.args={{args}}"
|
||||
clean:
|
||||
mvn clean
|
||||
compile:
|
||||
|
|
|
|||
|
|
@ -7,11 +7,12 @@ import java.nio.charset.StandardCharsets;
|
|||
|
||||
public class SyslogClient {
|
||||
|
||||
private static final int PORT = 514;
|
||||
public static void main(String[] args) throws Exception {
|
||||
DatagramSocket socket = new DatagramSocket();
|
||||
socket.setBroadcast(true);
|
||||
|
||||
// 🔍 Discovery (Unverändert)
|
||||
// Discovery
|
||||
byte[] discoverMsg = "DISCOVER".getBytes();
|
||||
DatagramPacket packet = new DatagramPacket(
|
||||
discoverMsg, discoverMsg.length,
|
||||
|
|
@ -19,13 +20,16 @@ public class SyslogClient {
|
|||
);
|
||||
socket.send(packet);
|
||||
|
||||
// 📥 Antwort empfangen (Unverändert)
|
||||
// Antwort empfangen
|
||||
byte[] buffer = new byte[256];
|
||||
DatagramPacket response = new DatagramPacket(buffer, buffer.length);
|
||||
socket.receive(response);
|
||||
System.out.println("Server gefunden: " + response.getAddress());
|
||||
|
||||
// 📨 ECHTE RFC 5424 Syslog-Nachricht aus DEINEN Klassen bauen!
|
||||
// ECHTE RFC 5424 Syslog-Nachricht aus AsciiChars & SyslogMessage
|
||||
// args als massage, ansonsten default message
|
||||
String text = (args.length > 0) ? String.join(" ", args): "Dies ist eine standardkonforme Testnachricht";
|
||||
|
||||
SyslogMessage msg = new SyslogMessage(
|
||||
SyslogMessage.Facility.USER,
|
||||
SyslogMessage.Severity.INFORMATIONAL,
|
||||
|
|
@ -34,7 +38,7 @@ public class SyslogClient {
|
|||
new AsciiChars.L128("PID1234"),
|
||||
new AsciiChars.L032("MSG-01"),
|
||||
new StructuredData().add(StructuredData.Element.newTimeQuality(true, true)),
|
||||
new SyslogMessage.TextMessage("Das ist eine standardkonforme Nachricht!")
|
||||
new SyslogMessage.TextMessage(text)
|
||||
);
|
||||
|
||||
// Die Klasse wandelt alles in den perfekten String um (inklusive Zeitstempel)
|
||||
|
|
@ -45,7 +49,7 @@ public class SyslogClient {
|
|||
byte[] data = logString.getBytes(StandardCharsets.UTF_8);
|
||||
|
||||
DatagramPacket syslogPacket = new DatagramPacket(
|
||||
data, data.length, response.getAddress(), 514
|
||||
data, data.length, response.getAddress(), PORT
|
||||
);
|
||||
|
||||
socket.send(syslogPacket);
|
||||
|
|
|
|||
|
|
@ -44,8 +44,14 @@ public class SyslogServer {
|
|||
}
|
||||
|
||||
String message = new String(packet.getData(), 0, length, StandardCharsets.UTF_8);
|
||||
|
||||
// BOM-zeichen ersetzten
|
||||
message = message.replace("", "Nachricht: ");
|
||||
|
||||
// 📡 Ausgabe mit Client-IP
|
||||
// Zur Sicherheit AUCH noch das Unicode-Zeichen des BOM-Zeichens
|
||||
message = message.replace("\uFEFF", "Nachricht: ");
|
||||
|
||||
// Ausgabe mit Client-IP
|
||||
System.out.println(
|
||||
"[SYSLOG] Von " +
|
||||
packet.getAddress().getHostAddress() +
|
||||
|
|
@ -78,7 +84,7 @@ public class SyslogServer {
|
|||
clientAddress.getHostAddress()
|
||||
);
|
||||
|
||||
// Antwort (leer reicht laut Aufgabe)
|
||||
// Antwort leer(laut Aufgabe)
|
||||
byte[] responseData = new byte[0];
|
||||
|
||||
DatagramPacket response = new DatagramPacket(
|
||||
|
|
|
|||
Loading…
Reference in New Issue