Iai pessoal, td numa boa? Pessoal estou com um problema quanto ao uso de sockets não bloqueadores que não estou conseguindo resolver. Como podem ver no código abaixo o na craição do socket já está sando passado o parametro Blocking => 0 mas minha aplicação insiste em ficar presa na leiutura do socket impedindo que envie dados através dela. Espero que alguém possa me ajudar! se IO::Socket; use IO::Select; use IO::Handle; use threads; use threads::shared; use Win32::Mutex; if ($#ARGV < 0) { print "Informe a porta que escutara as conexoes: "; $port_listen=<STDIN>; } else { $port_listen=$ARGV[0]; } print "\nServidor sendo executado na porta $port_listen\n"; $socket =IO::Socket::INET->new(LocalPort =>$port_listen, Type => SOCK_STREAM, Proto => 'tcp', Listen => 5, Reuse=> 1, Blocking => 0 ); $socket->autoflush(1); $| = 1; $ss = IO::Select->new(); $ss -> add ($socket); $mutex = Win32::Mutex->new(init,'mutex'); while(1) { @connections_pending = $ss->can_read(); foreach (@connections_pending) { $remote = accept($fh, $_); ($port,$iaddr) = sockaddr_in($remote); $peeraddress = inet_ntoa($iaddr); print "Conexao estabelecida com $peeraddress na porta $port.\n"; $t = threads->create(\&new_connection, $fh); $t->detach(); close($fh); } } ####################################################################################################### # Threads ####################################################################################################### sub new_connection { $fh = shift; binmode $fh; while ($request_line = <$fh>) { #print $request_line, "\n"; chomp($request_line); chop($request_line); @parameters=split(/ /,$request_line); if ($parameters[0] eq "Get_toc") { $mutex->wait(0); print $fh &send_toc(); print $fh "\r\n"; $mutex->release; }elsif ($parameters[0] eq "Get_site") { $mutex->wait(0); print $fh send_content($parameters[1]); print $fh "\r\n"; $mutex->release; }elsif ($parameters[0] eq "Edit_site") { $mutex->wait(0); update_content($parameters[1],$parameters[2], $parameters[3]); $mutex->release; }elsif ($parameters[0] eq "Close") { close($fh); threads->exit; } } }