[Duvida] Perl - IO::Socket (chat)

Started by Shady, 20 de June , 2006, 12:47:25 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Shady

Oi pessoal... estou tentando codar um chat em perl, e estou no comecinho, mas ja encontrei problemas.

 O chat e baseado em um cliente e um servidor, ambos usando o modulo IO::Socket. O servidor e iniciado e aguarda por conexoes, enquanto o cliente se conecta a ele (duh) para iniciar o chat.

 Apos a conexao ser estabelecida, o servidor aguarda pela primeira mensagem. O cliente a envia e o servidor a imprime na tela. Quando o servidor envia uma outra mensagem, no entanto, o cliente nao consegue imprimi-la. Seguem os codigos dos arquivos:

.:Servidor.pl:.

use IO::Socket;

$servidor = IO::Socket::INET->new(
Proto => 'tcp',
LocalAddr => 'localhost',
LocalPort => '90',
Reuse => 1

) or die "$!";

$servidor->listen();
$servidor -> autoflush(1);

print "Servidor criado com sucesso... aguardando conexao.\n\n";
my $client;

reciclar();

sub reciclar(){

while($client = $servidor->accept()){
 print <$client>."\n";
 sleep(1);
 $mensagem = <STDIN>;
 $client->send($mensagem);
 }
$servidor -> close();
reciclar();
}


.:Cliente.pl:.

use IO::Socket;

$servidor = new IO::Socket::INET(

PeerHost => "127.0.0.1",
PeerPort => "90",
Proto => "tcp",
Reuse => 1

);

print "Conexao estabelecida com sucesso...\n\n";

chop($mensagem = <STDIN>);
$servidor->send($mensagem);

my $client;

reciclar();

sub reciclar(){

$servidor->listen();

while($client = $servidor->accept()){

 print <$client>."\n";
 $mensagem = <STDIN>;
 $client->send($mensagem);
 }
$servidor -> close();
reciclar();
}

 Alguem pode sanar minha duvida?


Mundus Vult Decipi

Shady



Mundus Vult Decipi