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?
Up.