Enunciado y solución de ejercicios resueltos en Python: socket. Se incluye la descarga del código fuente completo de los ejercicios en Python. Se desarrollarán dos programas Python, un cliente y un servidor, para envío de mensajes por sockets entre ambos.

Ejercicio resuelto Python: socket

Enunciado del ejercicio Python

Realizar un script Python que cree envíe mensajes por socket (cliente). Y otro script para recibir mensajes por sockets (servidor).

Tanto el servidor como el cliente quedarán a la escucha de recepción de mensajes (por sockets). El servidor estará ubicado en el mismo equipo que el cliente (localhost o 127.0.0.1). Por lo tanto, el servidor realizará la escucha por localhost y el puerto 8089.

La funcionalidad pedida para cliente y servidor:

  • El servidor mostrará por pantalla los datos del cliente conectado (IP y puerto), con el formato:
    • Conexión al servidor desde cliente: IP y PUERTO.
  • El servidor mostrará por pantalla el mensaje de texto recibido del cliente, con el formato:
    • Mensaje recibido: MENSAJE.
  • El servidor enviará un mensaje al cliente, con el formato:
    • Mensaje recibido en el servidor del cliente IP y PUERTO.
  • Desde el cliente, se le pedirá al usuario que introduzca un mensaje. El mensaje introducido se enviará por socket al servidor.
  • El cliente debe mostrar por pantalla el mensaje recibido desde el servidor, con el formato:
    • Mensaje recibido del servidor: MENSAJE.

Para el desarrollo de este ejercicio, en el servidor, únicamente se permitirá una conexión de un único cliente concurrentemente.

Cuando el usuario introduzca «q» en el mensaje desde el cliente, se cerrará la conexión tanto en servidor como en el cliente.

Solución del ejercicio en Python

La solución propuesta al ejercicio 1, como ejemplo de uso de sockets en Python, podría ser:

Para el script Python del servidor:

Para el script Python del cliente:

Ejemplo de ejecución del ejercicio en Python

La compilación del ejercicio 1, por la parte del servidor, quedará a la escucha, mostrando el mensaje:

Servidor iniciado, queda a la escucha de conexiones de clientes…

Por la parte del cliente, enviando un mensaje al servidor por sockets:

Introduzca un mensaje para enviar al servidor (introduce ‘q’ para salir): Hola, prueba envío mensaje
Mensaje recibido del servidor: Mensaje recibido en el servidor del cliente IP (‘127.0.0.1’, 49201)
Introduzca un mensaje para enviar al servidor (introduce ‘q’ para salir):

Y el servidor, mostrando el resultado de la recepción del mensaje desde el cliente y del envío de mensaje al cliente, así como el cierre del programa si se pulsa «q»:

Y el cliente, nuevamente, con la recepción del mensaje del servidor y el cierre del cliente cuando se pulsa «q»:

Descarga del fichero Python con el ejercicio resuelto

En el siguiente enlace os proporcionamos la descarga del código fuente completo en Python con la solución del ejercicio propuesto: