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