feat(core): programs' threads, and FILIUS' echo server and generic client after Java, measured against Java
Programs run as generators that yield what they wait for (threads.ts); the engine resumes them after every event. TCP connect, send, receive, accept and name resolution exist as such steps; the blocking calls wrap them. EchoRun records eight stories in Java FILIUS, frames, tables and each program's window lines; echoJava.test.ts plays them card by card. Not taken from Java: a connection without a route hangs for ever; a server switched off leaves its connections' last FIN unanswered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -546,3 +546,37 @@ Gemessen (01.10.2026):
|
||||
in der Javas Threads senden; mit acht Clients stauen sich die Broadcasts,
|
||||
ein Frame erreicht die Karten bis zu rund 450 ms versetzt, und Javas
|
||||
Mitschnitt verliert eigene Frames eines Clients.
|
||||
|
||||
## Echo-Server und einfacher Client (F3.1)
|
||||
|
||||
`EchoRun` installiert auf dem Netz von `tcp-lan` Filius' Echo-Server
|
||||
(`ServerBaustein`) auf .10, eingeschaltet auf Port 55555, bevor die
|
||||
Simulation startet (wie eine Datei ihn lädt), und den einfachen Client
|
||||
(`ClientBaustein`) auf .20 und .30. Es macht die Aufrufe wie die Fenster:
|
||||
`verbinden` und `trennen` gehen an den Thread des Programms, `senden` läuft
|
||||
im Thread des Aufrufers, bis es zurückkehrt. Es schreibt nach
|
||||
`echo-java-<ablauf>.java.json` die Frames jeder Karte, Javas Tabellen und
|
||||
jede Zeile, die ein Programm in sein Fenster schreibt (seine Beobachter),
|
||||
dazu die Aufrufe. Abläufe: `exchange`, `closedPort`, `noRoute`,
|
||||
`notConnected`, `serverOff`, `reconnect`, `twoClients`, `otherPort`.
|
||||
|
||||
Gemessen (01.10.2026):
|
||||
|
||||
* `Anwendung.starten` meldet seinen Beobachtern `null`; das Fenster
|
||||
überspringt es.
|
||||
* Der Client merkt die Verbindung erst beim nächsten Blick
|
||||
(`TCPSocket.verbinden` schläft 100 ms), der Server ebenso eine neue
|
||||
Verbindung (`ServerSocket.oeffnen`) und dass er ausgeschaltet wurde
|
||||
(„Server-Socket geschlossen“ rund 20 ms nach dem Ausschalten).
|
||||
* Ohne Route zum Ziel stirbt der Socket-Thread des Clients an der
|
||||
`RouteNotFoundException`; `verbinden` wartet ewig, das Fenster bleibt
|
||||
stumm, kein Frame geht hinaus.
|
||||
* Ausgeschaltet schließt der Server seine Verbindungen mit FIN, gibt aber
|
||||
zugleich den Port frei (`ServerSocket.schliessen`); das FIN des Clients
|
||||
findet keinen Socket mehr und bleibt ohne ACK.
|
||||
* Aus- und sofort wieder eingeschaltet (ohne Pause) merkt Javas Schleife das
|
||||
Ausschalten nicht und lauscht weiter auf dem alten Port, auch wenn er
|
||||
geändert wurde. Wer im Fenster den Port wechselt, lässt Sekunden
|
||||
dazwischen; so misst es `otherPort`.
|
||||
* Der Client sendet nur ein SYN (wie bei `TcpRun`, `closedPort`).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user