Lösung mit einem Prozeß VIII

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

chatserver.pl
my $handler = $handler{$handle};
$handler->{'ibuf'} .= $buffer;
if ($handler->{'ibuf'} =~ /^(.*\n)(.*)/s) {
   if ($1 =~ /^\r?\n$/) {
      &{$handler->{'readline'}}($handle, "");
   } else {
      foreach my $line (split /\r?\n/, $1) {
         &{$handler->{'readline'}}($handle, $line);
      }
   }
   $handler->{'ibuf'} = $2;
}

*Da die Eingabe beliebig fragmentiert sein kann, können unvollständige Zeilen eintreffen oder mehrere Zeilen auf einmal.
 
*Deswegen wird das Eingelesene (abgelegt in $buffer) zuerst an ibuf gehängt und anschließend wird überprüft, ob mindestens eine vollständige Zeile damit vorliegt. Wenn ja, werden alle vollständigen Zeilen einzelen an den Bearbeiter, der bei readline eingetragen ist, weitergeleitet.
 

 [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