[Cascavel-pm] Duvida de Socket
Ricardo Stock
ricardostock em bol.com.br
Domingo Agosto 23 08:09:24 PDT 2009
Bom dia a todos, fiz um socket para receber dados. O mesmo esta
funcionando e recebendo os dados via rede. Porém percebi que só Funciona da
seguinte maneira. Ou seja nesta sequência.
Inicio o Servidor
Inicio o cliente, envia e recebe normalmente
Porém se fecho o cliente e depois abro novamente o servidor nao recebe
mais mensagens. Também percebi que o servidor só recebe de um cliente, se
abrir mais de um o mesmo não recebe.
Gostaria de entender o que esta acontecendo pois desejo deixar o mesmo
online para receber dados e trabalhar com os mesmos depois.... estou
aprendendo ainda.
No mais, obrigado
Segue o código
CÓDIGO DO SERVIDOR
use warnings;
use strict;
use IO::Socket::INET;
my $host='127.0.0.1',
my $porta='23';
my ($server,$sock_client,$data);
print "SERVIDOR ONLINE\n";
$server = IO::Socket::INET->new(
LocalAddr=>$host,
LocalPort=>$porta,
Proto=>'tcp',
Listen=>10,
Reuse=>1);
$sock_client = $server->accept();
while (1) {
$sock_client->recv($data,1024);
if($data) {
if ($data eq "quit") {
print "Servidor Finalizado\n";
exit;
}
print "Recebido\n", $data,"\n";
}
}
=============================================
CODIGO DO CLIENTE
use strict;
use warnings;
my ($msg,$client,$dados);
use IO::Socket::INET;
my $host='127.0.0.1',
my $porta='23';
print "CLIENT ONLINE\n";
$client=IO::Socket::INET->new(
PeerAddr=>$host,
PeerPort =>$porta,
Timeout => 60) || die " Erro ao conectar ao
HOST $host $! \n";
&MSG();
sub MSG {
print "Aguardando Dados\n";
$dados=<STDIN>;
chomp($dados);
if ($dados eq "fim") {
print "Cliente Finalizado\n";
close($client);
exit;
}
&ENVIA;
}
sub ENVIA {
$msg=$dados;
print "Enviando: ",$msg, "";
$client->send($msg);
print "-> Enviado com Sucesso","\n";
&MSG;
}
Ricardo Stock
ricardostock em bol.com.br
Mais detalhes sobre a lista de discussão Cascavel-pm