Listing 3.
 
Lincoln D. Stein

Client-Server Applications
The Perl Journal, Fall 1999
 
 
  0  #!/usr/bin/perl
  1  # file: eliza_thread.pl
  2  use IO::Socket;
  3  use Thread;
  4  use Chatbot::Eliza::Server;
    
  5  use constant PORT => 12000;
  6  my $listen_socket = IO::Socket::INET->new(LocalPort => PORT,
  7                                        Listen    => 20,
  8                                        Proto     => 'tcp',
  9                                        Reuse     => 1);
 10  die "Can't create a listening socket: $@" unless $listen_socket;
    
 11  warn "Listening for connections...\n";
    
 12  while (my $connection = $listen_socket->accept) {
 13    my $t = Thread->new(\&interact,$connection) || 
                           die "Can't start a thread: $!";
 14    $t->detach;
 15  }
    
 16  sub interact {
 17    my $handle = shift;
 18    Chatbot::Eliza::Server->new->command_interface($handle,$handle);
 19    $handle->close();
 20  }