Dependendo de sua necessidade, valerá mais a pena seguir a sugestão do Alexei...<br><br>Mas como vc citou o caminho do &quot;fazer com as proprias mãos&quot;, sugiro entender as funções abaixo:<br>- sysread do modulo SOAP::Transport::TCP::Client<br>
- handle do módulo  SOAP::Transport::TCP::Server<br><br>Ambos na URL:<br>  <a href="http://cpansearch.perl.org/src/MKUTTER/SOAP-Lite-0.712/lib/SOAP/Transport/TCP.pm">http://cpansearch.perl.org/src/MKUTTER/SOAP-Lite-0.712/lib/SOAP/Transport/TCP.pm</a><br>
<br>Eu utilizei muito isto por volta de 2003, mas estou meio enferrujado. Se não me engano a função select retornava o filehandle que teria algo para ler ou escrever.<br><br>Mas estou sem acesso ao código em que eu trabalhei no momento.<br>
<br>A grosso modo, a sensação de travamento é pelo fato de entrar em uma leitura em modo blocking, sem ter nada a receber.<br><br>Em resumo.<br><br>Quando você usa o codigo &quot;$data = &lt;$new_sock&gt;;&quot;, ficará aguardando alguma informação, mas com buffer vazio, este aguardo será infinito.<br>
<br><br>Meus 2 minutos ;)<br><br>Marco Antonio<br>
 <br><br><br><br><div class="gmail_quote">Em 18 de dezembro de 2010 10:09, Agnaldo Macedo <span dir="ltr">&lt;<a href="mailto:agnaldo@starweb-software.com.br">agnaldo@starweb-software.com.br</a>&gt;</span> escreveu:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Olá pessoal.<br>
<br>
Tenho uma programa que recebe conexões via scoket (o código esta abaixo).<br>
Meu problema é que nesse ponto<br>
     print &quot;Aguardando ...&quot;;<br>
     my $new_sock = $sock-&gt;accept();<br>
     print &quot;Processando ...&quot;;<br>
     my $data = &#39;&#39;;<br>
     $data = &lt;$new_sock&gt;;<br>
     print &quot;Dados recebidos ...&quot;;<br>
às vezes, por motivo de &quot;alguma coisa&quot; no client que faz a conexão, ele trava.<br>
Eu fico com e mensagem de &quot;Processando ...&quot; na tela.<br>
Ou seja, na instrução<br>
     $data = &lt;$new_sock&gt;;<br>
ele fica lendo, lendo, lendo e não chega ao final.<br>
Não sei se é falta de algum &quot;byte&quot; finalizado da mensagem, ou se apenas problema de time out e ele fica esperando.<br>
Teria algo que eu pudesse &quot;quebrar&quot; a conexão e seguir adiante, sem ficar preso ali.<br>
<br>
<br>
<br>
use warnings;<br>
use strict;<br>
use IO::Socket;<br>
<br>
$| = 1;<br>
<br>
my $sock = IO::Socket::INET-&gt;new (LocalPort =&gt; 8010, Type =&gt; SOCK_STREAM, timeout =&gt; 120, Proto =&gt; &#39;tcp&#39;, Listen =&gt; 50);<br>
unless ($sock) { die &quot;Servidor não pode ser criado&quot; }<br>
print &quot;Servidor iniciado\n&quot;;<br>
<br>
my $continua = &#39;SIM&#39;;<br>
while ($continua eq &#39;SIM&#39;)<br>
  {<br>
     print &quot;Aguardando ...&quot;;<br>
     my $new_sock = $sock-&gt;accept();<br>
     print &quot;Processando ...&quot;;<br>
     my $data = &#39;&#39;;<br>
     $data = &lt;$new_sock&gt;;<br>
     print &quot;Dados recebidos ...&quot;;<br>
<br>
     if ($data)<br>
            {<br>
               print &quot;Dados disponiveis ...\n&quot;;<br>
            }<br>
        else<br>
            {<br>
               print &quot;Nada a processar!\n&quot;;<br>
            }<br>
     close ($new_sock);<br>
  }<br>
close($sock);<br>
exit(0); <br>
_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</blockquote></div><br>