|
my %handler = ( $socket => { read => \&new_participant, handle => $socket, }, ); my $read = new IO::Select; $read->add($socket); my $write = new IO::Select; my %nickname = (); while (my @sets = IO::Select->select($read, $write)) { foreach my $handle (@{$sets[0]}) { &{$handler{$handle}->{read}}($handle); } foreach my $handle (@{$sets[1]}) { &{$handler{$handle}->{write}}($handle); } } |
%handler ist die zentrale Datenstruktur, die für jede
offene Verbindung den aktuellen Status hält.
| |
Das Modul IO::Select unterstützt den
Systemaufruf select(2), der den Prozeß blockiert,
bis eines von vielen Ereignissen in Zusammenhang mit
offenen Verbindungen eintritt (oder ein Zeitlimit
verstreicht).
|
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003 |