Está usted en Indice > Construcción > Lenguajes > Perl > Lecciones y Paso a Paso > Crear un servidor de MP3 con Perl
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Crear un servidor de MP3 con Perl

Introducción

En una de mis rutinarias navegaciones por perlmonks.org, me encontré un tutorial bastante interesante. En cuanto termine de leerlo tuve la necesidad de traducirlo y ponerlo en el sitio.

El tutorial es de perlmonkey y lo pueden encontrar en su forma original aquí.

Como siempre hago al traducir un tutorial, le cambio ciertas palabras y explico con mayor detalle lo que siento que necesita mayor explicación.

Creando nuestro servidor

Es impresionante lo sencillo que es crear un robusto servidor que dejará a tus amigos y colegas con la boca abierta usando perl.

Para esto usamos el módulo IO::Socket, que nos da una sencilla interface orientada a objetos para tomar control de nuestros sockets.

Para empezar, nuestro servidor necesita un socket para escuchar, comúnmente llamado "listening socket", a este socket es a donde nuestros clientes se conectan. No es cosa del otro mundo crear este socket:

#creando un socket para escuchar
my $listen_socket = IO::Socket::INET->new(LocalPort => 8000,
Listen => 10,
Proto => 'tcp',
Reuse => 1);

Esto creará un socket para escuchar en el host local bajo el puerto 8000, usando el protocolo TCP. El parámetro "Listen" es el máximo de clientes que podemos tener en "queue" o cola. Y "Reuse" te permite reiniciar el puerto 8000. Estos son los parámetros básicos que usaremos.

Para manejar un cliente intentando conectar, la siguiente línea creará el socket para el cliente:

my $connection = $listen_socket->accept;

Aquí la variable $connection es un objeto de socket, que puede ser manejado como un objeto de archivo. Así que puedes imprimir o leer de él como lo harías con un archivo:

#Escribir al socket del cliente
print $connection "Hello Client!";

#leer del socket del cliente
my $message = <$connection>;

Lo siguiente que debemo que ver tiene que ver con el "fork" de nuestro servidor. Cuando un proceso hijo muere, no libera los recursos del sistema hasta que el proceso padre reconoce que esta muerto con la llamada de las funciones "wait" o "waitpid".

Como los servidores por lo general trabajan por mucho tiempo, y se terminan varios procesos hijos, se hace necesario asegurarnos de que el proceso padre se este enterando que los procesos hijos se están muriendo, si no se da cuenta el proceso padre, entonces los procesos hijos se convierten en "zombies".

Los servidores normalmente se la pasan la mayoría de su tiempo en la llamada "accept" esperando llamadas de nuevos clientes esperando conectarse. Pero el problema, es que también está esperando que los procesos hijos se mueran, entonces ¿cómo puede hacer el servidor dos cosas a la vez? Fácil: con señales.



Usuarios que han visto este tema también han visto...

- POP3 con Perl
- Trabajar con archivos en Perl
- Fecha y Hora con Perl
- Aprende PERL eficazmente
- Como Utilizar MySQL con Perl


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 25-05-2012 a las 20:14:18