Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Introducción a la programación de redes en Python

by
Difficulty:AdvancedLength:ShortLanguages:

Spanish (Español) translation by Carlos (you can also view the original English article)

Este tutorial te ofrecerá una introducción a los sockets en Python y cómo utilizar el módulo de socket para crear servidores y clientes HTTP en Python. También se incluirá a Tornado, una biblioteca de redes de Python que es ideal para sondeos largos, WebSockets y otras aplicaciones que requieren una conexión de larga duración para cada usuario.

¿Qué son los sockets?

Un socket es un enlace entre dos aplicaciones que pueden comunicarse entre sí (ya sea localmente en una sola máquina o a distancia entre dos máquinas en ubicaciones separadas).

Básicamente, los sockets actúan como un enlace de comunicación entre dos entidades, es decir, un servidor y un cliente. Un servidor dará la información solicitada por un cliente. Por ejemplo, cuando visitaste esta página, el navegador creó un socket y se conectó al servidor.

El módulo de socket

Para crear un socket, se utiliza la función socket.socket (), y la sintaxis es tan simple como:

Aquí está la descripción de los argumentos:

  • socket_family: representa la familia de direcciones (y el protocolo). Puede ser AF_UNIX o AF_INET.
  • socket_type: representa el tipo de socket y puede ser SOCK_STREAM o SOCK_DGRAM.
  • protocol: este es un argumento opcional y, por lo general, su valor predeterminado es 0.

Después de obtener tu objeto del socket, puedes crear un servidor o un cliente según se desee usando los métodos disponibles en el módulo de socket.

Crea un cliente simple

Antes de iniciar, veamos los métodos de socket de cliente disponibles en Python.

  • s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • s.connect(): Inicia una conexión con el servidor TCP.

Para crear un nuevo socket, primero importa el método de socket de la clase de socket.

Después, crearemos un socket de flujo (TCP) de la siguiente forma:

El argumento AF_INET indica que estás solicitando un socket de Protocolo de Internet (IP), específicamente IPv4. El segundo argumento es el tipo de protocolo de transporte SOCK_STREAM para sockets TCP. Asimismo, también puedes crear un socket IPv6 especificando el argumento del socket AF_INET6.

Especifica el servidor.

Especifica el puerto con el que nos queremos comunicar.

Conecta el socket al puerto donde el servidor está escuchando.

Es importante tener en cuenta que el host y el puerto deben ser una tupla.

Envía una solicitud de datos al servidor:

Obtén la respuesta del servidor:

Para cerrar un socket conectado, se utiliza el método de cierre:

A continuación se muestra el código completo para el cliente/servidor.

Crea un servidor simple

Ahora veamos un simple servidor Python. Los siguientes son los métodos de servidor con socket disponibles en Python.

  • s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • s.bind(): enlaza la dirección (nombre del host, número de puerto) al socket.
  • s.listen (): configura e inicia TCP listener.
  • s.accept (): acepta la conexión del cliente TCP.

Seguiremos los siguientes pasos:

  • Crea un socket.
  • Enlaza el socket a un puerto
  • Empieza a aceptar conexiones en el socket.

Aquí está el programa del servidor.

El servidor ahora está listo para las conexiones entrantes.

Ahora ejecuta los programas del cliente y del servidor en ventanas de terminal separadas, para que puedan comunicarse entre sí.

Salida del servidor

Salida del cliente

El framework Tornado

El framework Tornado es una de las bibliotecas disponibles para la programación de redes en Python. En esta sección, analizaremos esta biblioteca y mostraremos cómo utilizarla para crear WebSockets.

Tornado es un framework web para Python y una biblioteca de redes asincrónicas. Tornado utiliza la red de I/O (entrada/salida) sin bloqueo y, por consiguiente, es capaz de escalar hasta decenas de miles de conexiones abiertas. Este atributo lo hace ideal para sondeos largos, WebSockets y otras aplicaciones que requieran una conexión duradera con cada usuario.

Vamos a crear un simple WebSocket con Tornado:

En el código anterior:

  • Definimos la clase ApplicationHandler que sirve como controlador para una solicitud y devuelve una respuesta usando el método write().
  • El método main es la entrada para el programa.
  • tornado.web.Application crea una base para la aplicación web y toma una colección de controladores, es decir, ApplicationHandler.
  • La aplicación escucha en el puerto 5000, y un cliente puede comunicarse con esta aplicación utilizando el mismo puerto.
  • tornado.ioloop.IOLoop.instance().start() crea un hilo sin bloqueo para una aplicación.

Si ejecutamos la aplicación, obtendremos el resultado como se muestra en la siguiente captura de pantalla.

The results of running our application

Conclusión

A estas alturas, ya debes haber comprendido los fundamentos de la programación de sockets en Python y cómo puedes crear un servidor y un cliente simples. Siéntete libre de experimentar creando tu propio cliente de chat. Para obtener más información, visita la documentación oficial de Python.

Asimismo, no dudes en ver lo que tenemos disponible para la venta y para el estudio en Envato Market, y no dudes en hacer cualquier pregunta y aportar tu valiosa retroalimentación usando el feed de abajo.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.