|
chatserver.pl |
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, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000 |