[Cascavel-pm] Socket
Agnaldo Macedo
agnaldo em starweb-software.com.br
Sábado Dezembro 18 04:09:10 PST 2010
Olá pessoal.
Tenho uma programa que recebe conexões via scoket (o código esta abaixo).
Meu problema é que nesse ponto
print "Aguardando ...";
my $new_sock = $sock->accept();
print "Processando ...";
my $data = '';
$data = <$new_sock>;
print "Dados recebidos ...";
às vezes, por motivo de "alguma coisa" no client que faz a conexão, ele
trava.
Eu fico com e mensagem de "Processando ..." na tela.
Ou seja, na instrução
$data = <$new_sock>;
ele fica lendo, lendo, lendo e não chega ao final.
Não sei se é falta de algum "byte" finalizado da mensagem, ou se apenas
problema de time out e ele fica esperando.
Teria algo que eu pudesse "quebrar" a conexão e seguir adiante, sem ficar
preso ali.
use warnings;
use strict;
use IO::Socket;
$| = 1;
my $sock = IO::Socket::INET->new (LocalPort => 8010, Type => SOCK_STREAM,
timeout => 120, Proto => 'tcp', Listen => 50);
unless ($sock) { die "Servidor não pode ser criado" }
print "Servidor iniciado\n";
my $continua = 'SIM';
while ($continua eq 'SIM')
{
print "Aguardando ...";
my $new_sock = $sock->accept();
print "Processando ...";
my $data = '';
$data = <$new_sock>;
print "Dados recebidos ...";
if ($data)
{
print "Dados disponiveis ...\n";
}
else
{
print "Nada a processar!\n";
}
close ($new_sock);
}
close($sock);
exit(0);
Mais detalhes sobre a lista de discussão Cascavel-pm