mrjerk: Hilfe bei TCP Server/Client

Beitrag lesen

Hallo,
Mehrere Threads machen ja nur dann Sinn, wenn Du mehrere Dinge GLEICHZEITIG (oder "quasi" gleichzeitig) tun willst. Z.b. einen Server, der gleich wieder Connections entgegennehmen kann, während er noch zeichen von einer bereits bestehenden Connection liest.
Willst Du sowas - dann hat Hotti Dir ja schon einen wertvollen Tipp gegeben, wie man das machen kann.

Ansonsten, wenn nur Dein Problem ist, dass <STDIN> zu viele Zeichen liest:
Etwas wie

  
my @lines = <STDIN>;  

funktioniert ja prinzipiell. Nur wird eben der KOMPLETTE Inhalt von STDIN im Speicher gehalten, was man vielleicht bei großen Dateien nicht unbedingt will.

Alternative: Du könntest das z.b mittels read realisieren:

Damit kannst Du eine frei definierbare Anzahl von Zeichen lesen - wie viele hängt davon ab, wieviel Puffer Du dem Programm gönnen willst. Die gelesenen Zeichen gibst Du gleich wieder über den Socket aus. Somit müssen immer nur so viele Zeichen im Speicher gehalten werden, wie du gerade gelesen hast.

Das wiederholst Du dann so lange, bis "read" 0 zurückliefert - dann sind keine Zeichen mehr da, und Du kannst aufhören.

Viele Grüße,
Jörg