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.

[ Hits: 18.924 ]

Por: Guinter Giuliano em 15/07/2008


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.

    Próxima página

Páginas do artigo
   1. Criação do IO::Socket::INET
   2. Exemplo de um cliente e servidor
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Enviando notificações do Nagios para o MSN

Instalação de MRTG em ambiente Windows

Impressão remota via WEB

Gerenciando redes com Perl e SNMP

Executando os principais frameworks Perl no cPanel com CGI

  
Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts