Pular para o conteúdo

Manipulação de sockets em Perl usando o IO::Socket::INET

Resolvi escrever esse artigo sobre manipulação de sockets em Perl usando o IO::Socket::INET para ajudar os novatos, já que a maioria dos artigos existentes são em inglês, dificultando a leitura de muitos.
Guinter Giuliano guinter
Hits: 20.079 Categoria: Perl Subcategoria: Rede
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Criação do IO::Socket::INET

Manipulação de sockets em Perl é o assunto do meu primeiro artigo, primeiro de muitos que ainda irei escrever. Resolvi escrever sobre esse tema pois encontrei muito poucos artigos em português falando a respeito.

A manipulação de sockets em Perl é simples, muito mais simples com o uso do IO::Socket::INET. E é sobre como usar o IO::Socket::INET que irei falar, é claro que existem outras maneiras de implementar o uso de sockets no Perl, mas não abordarei essas maneiras.

O IO::Socket::INET é criado com o método new. O método new pode receber como argumentos a seguintes opções:

PeerAddr => hostname[:porta]

Serve para especificar o host remoto e opcionalmente a porta. O hostname pode ser tanto um nome como www.vivaolinux.com.br como um número de IP na seguinte forma xxx.xxx.xxx.xxx.

PeerPort => porta

Serve para especificar o número da porta em um host remoto. Caso você não saiba o número do serviço, um nome de serviço como http, ftp poderá ser usado.

LocalAddr => hostname[:porta]

Serve para especificar um endereço local e opcionalmente a porta.

LocalPort => porta

Serve para especificar o número da porta ou o nome do serviço.

Proto => nome

Serve para especificar o protocolo a ser usado no socket. Exemplos: tcp ou udp.

Type => SOCK_STREAM | SOCK_DGRAM

Serve para especificar o tipo de socket a ser usado. SOCK_STREAM indica que a conexão será baseada em streaming. SOCK_DGRAM indica que o tipo de conexão será baseada em datagrama.

Listen => n

Serve para especificar o número máximo de requisições de clientes.

Reuse => 1

Se o valor do Reuse for diferente que zero, significa que o socket poderá ser reusado sem precisar ser reaberto.

Timeout => n

Serve para especificar o tempo limite que a conexão poderá levar.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Criação do IO::Socket::INET
   2. Exemplo de um cliente e servidor
Nenhum artigo encontrado.

Instalação de MRTG em ambiente Windows

Impressão remota via WEB

Enviando notificações do Nagios para o MSN

Gerenciando redes com Perl e SNMP

Enviando emails em Perl

#1 Comentário enviado por roberva em 16/07/2008 - 10:52h
Ótimo artigo, parabéns e aguardo o próximo.

Correção para o amigo:

no final do script de servidor faltou o fechamento do statement: "{"
Segue o corrigido.


Servidor:

#! /usr/bin/perl

use IO::Socket::INET;
use strict;

my $server_socket = IO::Socket::INET->new(
'LocalPort' => '2008',
'Proto' => 'tcp',
'Reuse' => 1,
'Listen' => SOMAXCONN
) or die "Não foi possível criar o socket. ($!)\n";

print "Servidor iniciado.\n";

while (my $cliente = $server_socket->accept){
while (<$cliente>) {
print "Mensagem recebida: $_";
print $cliente "Mensagem enviada: $_ ";
}
}
#2 Comentário enviado por unixtm em 17/07/2008 - 12:55h
Gostei, ótimo artigo.. Perl é ótimo para trabalhos que usem sockets =)
#3 Comentário enviado por chartrand em 26/10/2009 - 12:57h
amigo, gostaria de saber se existe uma forma de eu conectar um socket no perl usando um proxy. Tipo, a porta que quero conectar é bloqueada aqui, então eu queria usar um proxy transparente(?) pra fazer essa conexão. Entende?
#4 Comentário enviado por removido em 11/07/2011 - 14:03h
chartrand, gostaria de saber se consegiu a resposta para essa pergunta !

Contribuir com comentário

Entre na sua conta para comentar.