#!/usr/bin/perl use strict; use Chatbot::Eliza; use IO::Socket; use POSIX 'WNOHANG'; use constant PORT => 12000; my $quit = 0; #singal handler for child die events $SIG{CHLD} = sub { while ( waitpid(-1, WNOHANG)>0) {}}; $SIG{INT} = sub {$quit++}; my $listen_socket = IO::Socket::INET->new(LocalPort => PORT, Listen => 20, Proto=> 'tcp', Reuse => 1, Timeout => 60*60, ); die "cant create a listening socket : $@" unless $listen_socket; warn "Server ready . waiting for connections ...\n "; while(!$quit) { next unless my $connection = $listen_socket->accept; defined (my $child = fork()) or die " cant fork : $!"; if ($child == 0) { $listen_socket->close; interact($connection); exit 0; } $connection->close ; } sub interact { my $sock = shift ; STDIN->fdopen($sock,"<") or die " cant reopen STDIN: $!"; STDOUT->fdopen($sock,">") or die "cant reopen STDOUT: $!"; STDERR->fdopen($sock,">") or die "cant reopen STDERR: $!"; $|=1; my $bot = Chatbot::ELiza->new; $bot->command_interface(); }
i m getting the following error though everything seems to be fine please help me figuring out
error :-Can't locate object method "new" via package "Chatbot::ELiza" (perhaps you forgot to load "Chatbot::ELiza"?) at ex10.3 line 46. Connection closed by foreign host.
In reply to problem with forking a server by rjsaulakh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |