feat(core): Gnutella joining after Java, measured against Java
GnutellaRun lets Java's PeerToPeerAnwendung join peers on terminal-net. The core's gnutella.ts does the same: a ping in Java's text format to port 6346, a pong back, the ping sent on to the other peers and their pongs back the way it came, at most the program's number of peers. Departure from Java: a ping that comes a second time gets no pong and its connection stays (Java's worker throws on the missing pong). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -870,6 +870,41 @@ Gemessen (02.10.2026):
|
||||
ebenso eine unter Last (andere Sitzungen auf dem Rechner: die erste
|
||||
ARP-Runde dauert dann knapp 300 statt 225 ms).
|
||||
|
||||
## Gnutella, Beitreten (F3.6a)
|
||||
|
||||
`GnutellaRun` installiert Javas Gnutella-Programm (`PeerToPeerAnwendung`)
|
||||
auf vier Rechnern von `terminal-net` (192.168.0.20, .30, .31 und 10.0.0.2
|
||||
hinter dem Router; .10 ohne) und ruft `beitretenNetzwerk` und
|
||||
`resetNetwork` zu festen Zeiten, wie das Fenster es tut. Geschrieben werden
|
||||
je Karte die Frames samt Tabellen, die bekannten Teilnehmer jedes Programms
|
||||
bei jeder Meldung an sein Fenster und am Ende.
|
||||
|
||||
Gemessen (02.10.2026):
|
||||
|
||||
* Ein Paket ist Text, seine Felder durch `//` getrennt (`PeerToPeerPaket
|
||||
.toString`): Ping `guid//0x00//hops//ttl//0//IP`, Pong
|
||||
`guid//0x01//0//8//Bits//IP//6346//Dateien//Bytes`; die Bitlänge zählt
|
||||
die Zeichen der Adresse mal acht und für jede Zahl die kleinste
|
||||
Zweierpotenz, die sie fasst. Die GUID ist zufällig (`new Random()`).
|
||||
* Beitreten: eine Verbindung zum Port 6346 des Teilnehmers, der Ping; der
|
||||
Teilnehmer nimmt den Absender des Pings auf, antwortet mit einem Pong und
|
||||
schickt den Ping (hops+1, ttl−1) über je eine neue Verbindung an seine
|
||||
anderen Teilnehmer, außer an den Absender und den Rechner des Pings;
|
||||
deren Pongs gehen (hops+1, ttl−1) über die Verbindung zurück, auf der der
|
||||
Ping kam (`sendePaket` nach GUID). Wer einen Pong auf seinen eigenen Ping
|
||||
bekommt, nimmt dessen Rechner auf; jeder höchstens so viele, wie er
|
||||
behält. Keine Verbindung wird je geschlossen.
|
||||
* Fehler Javas: kommt derselbe Ping ein zweites Mal an, gibt `erstellePong`
|
||||
`null` zurück, und `toString()` darauf wirft; der Arbeiter schließt die
|
||||
Verbindung (gemeint war: kein Pong). Ein Text ohne Paketkopf wirft
|
||||
ebenso und schließt die Verbindung.
|
||||
* Zu sich selbst kein Ping; zu einem Rechner ohne Programm ein SYN (Javas
|
||||
eines statt drei); ins Leere nur ARP.
|
||||
* Wo viele Verbindungen zugleich laufen, kommen die Frames zweier
|
||||
Verbindungen (oder beider Richtungen einer) an einer Karte mal so, mal so
|
||||
herum, einige zehn Millisekunden auseinander: Javas Thread-Takt über
|
||||
mehrere Sprünge.
|
||||
|
||||
## Datei-Explorer, Texteditor, Bildbetrachter (F3.5b)
|
||||
|
||||
`FileCases` tut, was die Fenster dieser Programme mit den Dateien eines
|
||||
|
||||
Reference in New Issue
Block a user