|
chatserver.pl |
sub broadcast { my ($from, $line) = @_; foreach my $handle (keys %handler) { send_msg($handler{$handle}->{'handle'}, "$from: $line"); } } sub send_msg { my ($handle, $line) = @_; my $handler = $handler{$handle}; return unless defined $handler->{'obuf'}; $write->add($handle) if @{$handler->{'obuf'}} == 0; push(@{$handler->{'obuf'}}, "$line\r\n"); } |
Bei einer Ausgabe an Klienten wird zunächst nur
der entsprechende Ausgabe-Puffer ergänzt.
| |
Dabei ist darauf zu achten, daß die entsprechende
Verbindung in die Menge $write aufgenommen wird, falls
der Ausgabe-Puffer vorher leer war.
| |
Wenn Zeiger als Schlüssel in einem assoziativen
Array verwendet werden (wie hier $handle bei %handler),
dann liefert keys %handler keine verwertbaren Zeiger
(Restriktion von Perl).
|
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000 |