Hi, can you give me a hand...I am getting serious problem with my 
Multithreaded Socket. Can you send me a simple code regarding this 
issue.  I'm under pressure to finish the code. Anyway I am sending my 
code so you can pinpoint the error(TONS OF DEFUNCT PROCESSES ARE BEING 
CREATED!!!!)
Tks in advance.
--------------------------------
#!/usr/up/tools/bin/perl5
push(@INC, "/usr/up/papi/lib");
require 5.002;
use strict;
use Socket;
use Carp;
my $sub; my $rc; my $self; my $zombie; my $port = X; my $proto = 
getprotobyname('tcp');
my $paddr;   my $Sbuff;   my $Nbuff; my $child; my $iaddr;  

socket(Server, PF_INET, SOCK_STREAM, $proto)   || die "socket: $!";
setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1))   || die 
"setsockopt: $!";
bind(Server, sockaddr_in($port, INADDR_ANY))   || die "bind: $!";
listen(Server,SOMAXCONN)                       || die "listen: $!";
select(STDOUT);
$| = 1; # ( autoflushing)
select(Server);
$| = 1;

while(1)
{
$paddr = accept(Client,Server)|| die "Erro accept() - $!";
select(Client);
$| = 1;
if(($child = fork()) == 0)
  { ($port,$iaddr) = sockaddr_in($paddr);
      while ( defined(sysread(Client,$Sbuff,300)) )    
      {&Retrieve_SubId($Sbuff); # GETS THE  ID
        close(Client);
       }
    exit;
  }# Fim do if fork()
else{
     do{
        $zombie = waitpid(-1,$child);#Se tiver processo aberto, mata o 
processo
        print STDOUT $zombie
       }until $zombie == -1;
     }
close(Client); # Caso nao entre no fork()
} # Fim do while


Reply via email to