feat: F4.6g1 the echo server and the generic client windows

Oracle EchoWindowRun uses Java's echo server and client windows as a
person does; SaveAfterRunRun echo saves what Java keeps after the run.
The room takes setActive with a port, connect/disconnect/send, sends
both views and writes the server's port and the client's target back.
The editor's windows show Java's buttons, fields and lines; a port that
is no port is marked and not handed over (Java's button throws).
Core fix: an empty message (one empty segment with the push, as Java's
erstelleSegmente makes) counted as a repeat and never arrived.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 20:04:33 +00:00
co-authored by Claude Opus 5.5
parent 3dc2713f81
commit e31da62ae0
24 changed files with 1481 additions and 18 deletions
+33
View File
@@ -1460,3 +1460,36 @@ Gemessen (03.10.2026):
* Der Bildbetrachter heißt nach dem Öffnen wie die Datei; jedes geöffnete
Bild legt Java über das vorige, eine Textdatei zeigt es als leeres Bild,
ohne Fund bleibt alles.
### Echo-Server und Einfacher Client (F4.6g1)
`EchoWindowRun` öffnet Javas `GUIApplicationServerBausteinWindow` und
`GUIApplicationClientBausteinWindow` auf je einem `GUIDesktopPanel` im Netz
von mail-lan (Server 192.168.0.30, Client 192.168.0.20) und benutzt sie wie
eine Person: Port tippen und starten (auch „abc“), Adresse und Port tippen
und „Verbinden“ (auch Port „x“), Nachrichten senden (auch eine leere und
eine mit zwei Zeilen), den Server anhalten, während der Client verbunden
ist, „Trennen“, ein Port ohne Server, ein unbekannter Name. Je Schritt:
Knöpfe, Felder (und ob sie beschreibbar sind), Zeilen beider Fenster und die
Ausnahmen, die Javas Knöpfe warfen (`packages/sim/test/echoWindow.java.json`).
`SaveAfterRunRun echo` speichert danach, was Java vom Echo im Projekt
behält (`packages/sim/test/fixtures/after-run-echo.fls`).
Gemessen (03.10.2026):
* Server: „Starten“/„Anhalten“, Port 55555, das Feld nur angehalten
beschreibbar; ein Port, der keine Zahl ist, wirft
(`NumberFormatException`) und nichts geschieht.
* Client: Adresse leer, Port 55555; „Verbinden“/„Trennen“; „Senden“ nur
verbunden, danach ist das Nachrichtenfeld leer; die Felder sind verbunden
gesperrt und zeigen nach jeder Zeile wieder die Werte des Programms.
* Eine leere Nachricht geht als ein leeres Segment mit PSH hinaus
(`erstelleSegmente` macht mindestens eines) und kommt als „>>“, „<<“
zurück; Java beendet eine Nachricht mit jedem PSH, auch dem eines
wiederholten Segments.
* Der angehaltene Server schließt die Verbindung („Socket zu … geschlossen“,
beim Client „Socket zu … getrennt“). Ein Port ohne Server endet in
„Zeitüberschreitung beim Verbindungsaufbau“, ein unbekannter Name in „Ziel
konnte nicht bestimmt werden!“.
* Nach dem Lauf speichert Java den Port des Servers, dass er läuft, und
Adresse und Port, die der Client zuletzt nahm.