Hi,eine Möglichkeit wäre eine Endlosschleife zu programmieren, die über einen BeendenButton oder die Tastenkombi Ctrl+Shift+Esc verlassen werden kann. Innerhalb dieser Schleife wird in regelmäßigen Abständen geprüft, ob am Socket neue Daten eingetroffen sind, die dann ans Display geschickt werden. Und falls das *Ereignis*: 0x13 im Eingabefeld oder AbsendenButton gedrückt eintritt, dann werden diese an den ausgehenden Socket geschickt.
Also jetzt, wo ich mir noch eimal richtig Gedanken darüber gemacht habe, ist echtes Multithreading vielleicht wirklich die beste Lösung, weil man dann eine bessere Kontrolle hat, bzw. die beiden Teile "rein" und "raus" sich nicht gegenseiteig deperformieren.
Für mich persönlich wäre also eine andere Variante, bei der zwei bleibende Kinder geforkt werden, die elegantere, weil ich auch ganz gerne die PIDs im Auge behalte. Das eine Kind kümmert sich um EingangsDaten plus Display, das andere Kind übernimmt den Part ausgehende Daten. Wenn eines der Kinder abschmiert, dann bekommst Du das mit und kannst zur Sicherheit *alle* Verbindungen zu dem Host, bei dem das Problem aufgetreten ist, kappen. Oder Du schickst ihm sonstwas an seinen PiratenPort, hehe.
Bei solchen Sachen, wo Benutzer Daten eingeben können ist es immens wichtig den Inhalt genau zu prüfen. Es könnte beispielsweise sein, dass ich mir ein Skript schreibe, welches an Deinen Chat einen ShellCode sendet. Paff, und dann schmiert bei Deinem Chat nur der "rein" Teil ab, was die anderen Prozesse ja im Auge behalten und sofort Gegenmaßnahmen ergreifen können.
Ob ein Bufferoverflow unter Perl (unter bestimmten Konditionen) tatsächlich möglich ist, da bin ich mir noch nicht so sicher, daran arbeite ich noch. Ich könnte mir vorstellen, das man den Interpreter vielleicht aus dem Tritt bringen kann, ist aber eine reine Mutmaßung. ;-)
Aber ein (D)DoS ist für einen Webserver auch nicht zu verachten, und wenn Dir einer Deinen ganzen Speicher vollknallt? Wenn's die richtige Seite trifft, dann kannn das Millionen von Dollars kosten und der Anbieter ist vielleicht pleite.
-uw
Datum: 11.07.2005-13:59
