|
![]() ![]() ![]() ![]() ![]() |
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 |