Ich habe folgendes Problem:
Mit Perl habe ich einen Chatserver programmiert, der pro User einen Prozess erzeugt und dann in einer Endlosschleife eine Datei ausliest und gegebenenfalls den Chattext anzeigt.
Diese Endlosschleife soll natürlich unterbrochen werden, wenn der User nicht mehr Empfangen kann (weil offline oder Fenster geschlossen).
Wie kann ich also prüfen, ob der Benutzer noch "da" ist?
Den Socket habe ich in etwa folgendermaßen erzeugt:
use IO:Socket;
$server = new IO::Socket::INET (LocalHost => $servername,
LocalPort => $port,
Listen => SOMAXCONN,
Proto => 'tcp',
Reuse => 1);
while ($socket = $server->accept()) {
$pid = fork();
if ($pid == 0) {
# Kindprozess
$go = 1;
while ($go && defined($buf = <$socket>)) {
&server;
}
exit(0);
}
}
close($server);
In server() wird dann die Endlosschleife gestartet.
Falls jemand eine Idee hat, bitte melden! Ich hab nämlich keine...
Gruß, Daniel