[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