Lösung mit einem Prozeß IV

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

chatserver.pl
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);
   }
}

*$read und $write sind zwei Objekte von IO::Select, die jeweils eine Menge von offenen Verbindungen repräsentieren.
 
*IO::Select->select akzeptiert bis zu vier Parameter:

*Eine Menge von Verbindungen, bei denen auf Eingabe gewartet wird,
 
*eine Menge von Verbindungen, bei denen darauf gewartet wird, daß blockierungsfrei geschrieben werden kann,
 
*eine Menge von Verbindungen, bei denen auf das Eintreten von Sonderbedingungen gewartet wird (z.B. out-of-band Daten) und
 
*ein Zeitlimit.
 

*IO::Select->select liefert dann eine Liste von Zeigern auf Listen mit Verbindungen zurück, für die die Ereignisse eingetreten sind.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003