Mmhh... I'm trying with threads->exit();.. any suggests? Could be
useful a similar "simple, practical and complete" example on cpan? For
newbies. It would be great.
Regards,
Jack
my $port = 2500;
my $timeout = 60;
$| =1;
my $server = IO::Socket::INET->new (
Proto => 'tcp',
LocalPort => $port,
Listen => SOMAXCONN,
Timeout => $timeout,
ReuseAddr => 1
) or die "Error: can't create listening socket : $!\n";
while (my $client = $server->accept()) {
my $thr = threads->create("listen_to_client", $client);
my $thr1 = threads->create("stdin_to_client", $client);
print "Client connected ", $thr->tid,"\n";
$thr->detach;
$thr1->detach;
}
exit(0);
sub listen_to_client {
my ($client) = @_;
my $tid = threads->tid();
while (my $get = <$client>) {
print "client ($tid) : $get";
print $client $get;
};
print "Client closed\n";
close $client;
}
sub stdin_to_client {
my ($client) = @_;
while (my $msg = <STDIN>) {
print $client $msg;
if ($msg =~ /exit/i){
print "exit\n";
close $client if $client;
#threads->exit() if threads->can('exit');
threads->exit();
}
}
print "stdin thread ended\n";
}
2007/11/13, Jerry D. Hedden <[EMAIL PROTECTED]>:
> jack ciabatta wrote:
> > I'm writing a simple tcp multithread daemon on a Linux
> > i386 system. For this moment the script is very short. I
> > would like have 3 distinct threads that answer to the
> > clients. Every thread answers and exits (with 'exit'
> > client command) separately. At this moment when a thread
> > quit, kill all threads.
>
> First of all, upgrade to the lastest version of 'threads'
> and threads::shared from CPAN.
>
> Normally, a thread should 'return' and not 'exit'. However,
> there is a whole section on this in the 'threads' POD called
> 'EXITING A THREAD'.
>