Lösung mit einem Prozeß V

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

chatserver.pl
sub new_participant {
   my $socket = shift;
   return unless defined (my $handle = $socket->accept);
   $read->add($handle);
   $write->add($handle);
   $handler{$handle} = {
      'read' => \&handle_read,
      'readline' => \&handle_line,
      'write' => \&handle_write,
      'ibuf' => "",
      'obuf' => ["Your nickname, please.\r\n"],
      'nickname' => "",
      'handle' => $handle,
   };
}

*new_participant wird von der zentralen Ereignis-Schleife aufgerufen als Bearbeiter für die zentrale Socket, wenn neue Verbindungen zum Chat-Dämon eröffnet werden.
 
*Mit $read->add($handle) wird $handle in die Menge $read aufgenommen.
 
*Folgende Komponenten gehören zu einer Verbindung in der Datenstruktur %handler:
readBearbeiter für Eingaben.
readlineBearbeiter für vollständige Zeilen.
writewird aufgerufen, wenn eine Zeile ausgegeben werden kann.
ibufEingabepuffer.
obufAusgabepuffer (Zeiger auf eine Liste mit einzelnen Zeilen).
nicknameDer Name des Teilnehmers.
handleDie offene Netzverbindung.

 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000