¿Cómo instalar Perl en Linux?
1. Presiona Ctrl-Alt + T, o buscas la terminal y la abres.
2. Escribe la siguiente línea: sudo apt-get install perl build-essential curl
3. Posiblemente te pida un password, indicas el tuyo.
Nota: Aunque no se vea ningun caracter cuando digitas, la terminal esta leyendo, solo digita tu password normalmente y le das Enter.
¿Cómo instalar Perl en Windows?
1. Le das clic al siguiente enlace ->
2. Nos vamos al final de pagina y damos clic en el enlace de descarga. (Esperamos a que se descargue).
3. Sigues los pasos de instalación.
Una introducción simplificada de Sockets.
Los sockets son un mecanismo que permite a los programas comunicarse, ya sea en la misma máquina o en una red. El modo de funcionamiento es muy simple: Cada máquina en una red se identifica con alguna dirección. En este tutorial vamos a hablar acerca de las redes TCP/IP, así también la dirección de red que queremos acceder es una dirección IP. (Como 192.168.4.4) Además la dirección IP es la que especifica la ubicacion de una máquina en la red, cada máquina tiene una serie de puertos que permiten el manejo de múltiples conexiones simultáneamente.
Un programa que desea recibir una conexión de otro programa, le pide al sistema operativo una señal para crear un socket y enlazarlo a algún puerto. Luego el programa se sienta y escucha el socket que se ha creado para recibir conexiones entrantes. El otro programa también crea un socket para la comunicación de tipo autoservicio receptor. La persona que llama debe especificar la dirección IP y el número de puerto del extremo receptor. Si todo va bien, y como veremos en breve, los dos programas deben establecer una comunicación a través de la red utilizando las órbitas. Los dos programas podrán intercambiar información, cada uno por la escritura y lectura del socket que ha creado.
¿Puedo hacer esto con Perl?
Claro. Perl proporciona soporte para la API de socket nativa. Aunque la interfaz no es tan mala de todos modos, también hay un módulo muy práctico, IO::Socket que funciona como un contenedor en el API nativo y proporciona una manera más simple y más fácil de tratar con sockets. Usaremos IO::Socket en este tutorial para demostrar escribiendo dos sencillos programas que se comunican con sockets.
Lo primero que tenemos que hacer es crear un socket. Lo utilizaremos para recibir conexiones. El código siguiente muestra cómo crear un conector de recepción. Tenga en cuenta que tenemos que especificar el nombre de localhost y el puerto al que se enlazará el socket. Por supuesto, si el puerto ya se está utilizando esta llamada fallará. También tenga en cuenta el parámetro 'Listen': este es el número máximo de conexiones que pueden estar en cola por el socket a la espera de que usted acepte y procesarlos. Por el momento, sólo se aceptarán
un máximo de una conexión en cualquier momento. (Esto significa que un intento de conexión mientras que estamos tratando con otra conexión, regresará con un error como "conexión rechazada" ) Por último la opción de «Reuse» indica al sistema para permitir la reutilización del puerto después de salir del programa.
Esto es para asegurar que si nuestro programa sale de manera anormal y no se cierra correctamente el socket, corriendo de nuevo permitirá la apertura de un nuevo socket en el mismo puerto.
1 use IO::Socket;
2 my $socket = new IO::Socket::INET (
3 LocalHost => '127.0.0.1',
4 LocalPort => '8888',
5 Proto => 'tcp',
6 Listen => 1,
7 Reuse => 1,
8 );
9 die "Could not create socket: $!n" unless $socket;
Ahora el socket está listo para recibir conexiones entrantes. Para esperar una conexión, se utiliza el método accept (), que devolverá un nuevo socket a través del cual podemos comunicarnos con el programa de llamada. El intercambio de información se logra mediante la lectura / escritura en el nuevo socket. El socket puede ser tratado como un gestor de archivo regular.
10 my $new_socket = $socket->accept();
11 while(<$new_socket> ) {
12 print $_;
13 }
14 close($socket);
El cliente
El otro lado de la comunicación es aún más simple. Todo lo que necesitamos hacer es crear un socket especificando el localhost y el puerto. El constructor devolverá un objeto socket después de que la conexión ha sido, determinada, y podemos empezar a enviar los datos de inmediato por escrito en el socket como cualquier otro gestor de archivos.
1 use IO::Socket;
2 my $socket = new IO::Socket::INET (
3 PeerAddr => 'localhost',
4 PeerPort => '8888',
5 Proto => 'tcp',
6 );
7 die "Could not create socket: $!n" unless $socket;
8 print $socket "Hello there!n";
9 close($socket);
Seguir adelante y probarlo!
Usted puede probar fácilmente los programas del ejemplo anterior. Todo lo que necesitas hacer es ejecutar primero el receptor y el remitente. En el extremo receptor, verá la línea "Hello there!" impresa en la pantalla del terminal. Si usted no tiene una red, aún puede utilizar 'localhost' para el nombre de host del receptor y la persona que llama sólo para probarlo.
Sincronización
Una cuestión importante a tener en cuenta en este tipo de comunicación es que los dos extremos deben seguir un procedimiento de común acuerdo de intercambio de datos. De lo contrario es muy fácil acabar en una situación de bloqueo en que cualquiera de los dos extremos tratan de leer, o ambos extremos tratan de escribir. Hay manera de adivinar si el otro extremo ha terminado todavía el envío de datos, a menos que haya algún protocolo de comunicación entre ellos que denota secciones lógicas de la comunicación en el contenido de los mensajes transmitidos. En el ejemplo anterior, el modelo es muy simple: El emisor envía
un mensaje y cierra su extremo de la conexión, mientras que el receptor sólo lee
los datos hasta que todo termine.
Por lo general, las transacciones de cliente-servidor se componen de una persona que llama (el cliente) enviando una solicitud, seguido por el receptor (servidor) devolviendo una respuesta. Para que el servidor de a entender cuando
se termina la petición, hay algún marcador acordado (por ejemplo, dos líneas en blanco consecutivas, o una línea que diga "END REQUEST" ) que indica la última línea de la petición. El servidor, empieza a enviar su respuesta sólo después de que se haya recibido esta línea, y después cierra el socket. El receptor, después de enviar todo el pedido cambia a la lectura hasta que el agujero se cierra, por lo que recibirá la respuesta. Esquemas más complejos se pueden establecer de maneras similares, de acuerdo a sus gustos y necesidades. Lo importante es asegurarse de que los dos extremos de la comunicación tienen una forma de saber cuándo hablar y cuándo escuchar, evitando así la posibilidad de ser bloqueado.
El contenido no es de mi autoria, solamente necesitaba la información y me parecio bueno compartirla con quien la necesite.
1. Presiona Ctrl-Alt + T, o buscas la terminal y la abres.
2. Escribe la siguiente línea: sudo apt-get install perl build-essential curl
3. Posiblemente te pida un password, indicas el tuyo.
Nota: Aunque no se vea ningun caracter cuando digitas, la terminal esta leyendo, solo digita tu password normalmente y le das Enter.
¿Cómo instalar Perl en Windows?
1. Le das clic al siguiente enlace ->
2. Nos vamos al final de pagina y damos clic en el enlace de descarga. (Esperamos a que se descargue).
3. Sigues los pasos de instalación.
Una introducción simplificada de Sockets.
Los sockets son un mecanismo que permite a los programas comunicarse, ya sea en la misma máquina o en una red. El modo de funcionamiento es muy simple: Cada máquina en una red se identifica con alguna dirección. En este tutorial vamos a hablar acerca de las redes TCP/IP, así también la dirección de red que queremos acceder es una dirección IP. (Como 192.168.4.4) Además la dirección IP es la que especifica la ubicacion de una máquina en la red, cada máquina tiene una serie de puertos que permiten el manejo de múltiples conexiones simultáneamente.
Un programa que desea recibir una conexión de otro programa, le pide al sistema operativo una señal para crear un socket y enlazarlo a algún puerto. Luego el programa se sienta y escucha el socket que se ha creado para recibir conexiones entrantes. El otro programa también crea un socket para la comunicación de tipo autoservicio receptor. La persona que llama debe especificar la dirección IP y el número de puerto del extremo receptor. Si todo va bien, y como veremos en breve, los dos programas deben establecer una comunicación a través de la red utilizando las órbitas. Los dos programas podrán intercambiar información, cada uno por la escritura y lectura del socket que ha creado.
¿Puedo hacer esto con Perl?
Claro. Perl proporciona soporte para la API de socket nativa. Aunque la interfaz no es tan mala de todos modos, también hay un módulo muy práctico, IO::Socket que funciona como un contenedor en el API nativo y proporciona una manera más simple y más fácil de tratar con sockets. Usaremos IO::Socket en este tutorial para demostrar escribiendo dos sencillos programas que se comunican con sockets.
Lo primero que tenemos que hacer es crear un socket. Lo utilizaremos para recibir conexiones. El código siguiente muestra cómo crear un conector de recepción. Tenga en cuenta que tenemos que especificar el nombre de localhost y el puerto al que se enlazará el socket. Por supuesto, si el puerto ya se está utilizando esta llamada fallará. También tenga en cuenta el parámetro 'Listen': este es el número máximo de conexiones que pueden estar en cola por el socket a la espera de que usted acepte y procesarlos. Por el momento, sólo se aceptarán
un máximo de una conexión en cualquier momento. (Esto significa que un intento de conexión mientras que estamos tratando con otra conexión, regresará con un error como "conexión rechazada" ) Por último la opción de «Reuse» indica al sistema para permitir la reutilización del puerto después de salir del programa.
Esto es para asegurar que si nuestro programa sale de manera anormal y no se cierra correctamente el socket, corriendo de nuevo permitirá la apertura de un nuevo socket en el mismo puerto.
1 use IO::Socket;
2 my $socket = new IO::Socket::INET (
3 LocalHost => '127.0.0.1',
4 LocalPort => '8888',
5 Proto => 'tcp',
6 Listen => 1,
7 Reuse => 1,
8 );
9 die "Could not create socket: $!n" unless $socket;
Ahora el socket está listo para recibir conexiones entrantes. Para esperar una conexión, se utiliza el método accept (), que devolverá un nuevo socket a través del cual podemos comunicarnos con el programa de llamada. El intercambio de información se logra mediante la lectura / escritura en el nuevo socket. El socket puede ser tratado como un gestor de archivo regular.
10 my $new_socket = $socket->accept();
11 while(<$new_socket> ) {
12 print $_;
13 }
14 close($socket);
El cliente
El otro lado de la comunicación es aún más simple. Todo lo que necesitamos hacer es crear un socket especificando el localhost y el puerto. El constructor devolverá un objeto socket después de que la conexión ha sido, determinada, y podemos empezar a enviar los datos de inmediato por escrito en el socket como cualquier otro gestor de archivos.
1 use IO::Socket;
2 my $socket = new IO::Socket::INET (
3 PeerAddr => 'localhost',
4 PeerPort => '8888',
5 Proto => 'tcp',
6 );
7 die "Could not create socket: $!n" unless $socket;
8 print $socket "Hello there!n";
9 close($socket);
Seguir adelante y probarlo!
Usted puede probar fácilmente los programas del ejemplo anterior. Todo lo que necesitas hacer es ejecutar primero el receptor y el remitente. En el extremo receptor, verá la línea "Hello there!" impresa en la pantalla del terminal. Si usted no tiene una red, aún puede utilizar 'localhost' para el nombre de host del receptor y la persona que llama sólo para probarlo.
Sincronización
Una cuestión importante a tener en cuenta en este tipo de comunicación es que los dos extremos deben seguir un procedimiento de común acuerdo de intercambio de datos. De lo contrario es muy fácil acabar en una situación de bloqueo en que cualquiera de los dos extremos tratan de leer, o ambos extremos tratan de escribir. Hay manera de adivinar si el otro extremo ha terminado todavía el envío de datos, a menos que haya algún protocolo de comunicación entre ellos que denota secciones lógicas de la comunicación en el contenido de los mensajes transmitidos. En el ejemplo anterior, el modelo es muy simple: El emisor envía
un mensaje y cierra su extremo de la conexión, mientras que el receptor sólo lee
los datos hasta que todo termine.
Por lo general, las transacciones de cliente-servidor se componen de una persona que llama (el cliente) enviando una solicitud, seguido por el receptor (servidor) devolviendo una respuesta. Para que el servidor de a entender cuando
se termina la petición, hay algún marcador acordado (por ejemplo, dos líneas en blanco consecutivas, o una línea que diga "END REQUEST" ) que indica la última línea de la petición. El servidor, empieza a enviar su respuesta sólo después de que se haya recibido esta línea, y después cierra el socket. El receptor, después de enviar todo el pedido cambia a la lectura hasta que el agujero se cierra, por lo que recibirá la respuesta. Esquemas más complejos se pueden establecer de maneras similares, de acuerdo a sus gustos y necesidades. Lo importante es asegurarse de que los dos extremos de la comunicación tienen una forma de saber cuándo hablar y cuándo escuchar, evitando así la posibilidad de ser bloqueado.
El contenido no es de mi autoria, solamente necesitaba la información y me parecio bueno compartirla con quien la necesite.