|
|
| 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 |