Evilnapsis

Programming, Hacking and More

Python

Ejemplo Basico de Socket Cliente y Servidor con Python

Los sockets sirven para crear conexiones de comunicación entre las aplicaciones, veamos un ejemplo de socket cliente y servidor con python.

Tengo una Introduccion sobre sockets donde pueden iniciar en el aprendizaje sobre sockets.

Los sockets es una característica que tienen todos los lenguajes de programación, sirven esencialmente para comunicar 2 o mas aplicaciones, en la practica los sockets son la base de internet, debido a que los sockets permiten comunicar 2 aplicaciones remotamente.

Hoy les voy a explicar un ejemplo sencillo de sockets usando python, vamos a tener 2 scripts, uno sera el cliente y otro el servidor.

Servidor en Python

Aquí les dejo el código con comentarios para hacer mas fácil la comprensión.

# Importamos las librerias necesarias
import socket
# Establecemos el tipo de socket/conexion
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 5000 # Puerto de comunicacion
sock.bind(('localhost',port)) # IP y Puerto de conexion en una Tupla

print ("esperando conexiones en el puerto ", port)
# Vamos a esperar que un cliente se conecte
# Mientras tanto el script se va a pausar
sock.listen(1)
# Cuando un cliente se conecte vamos a obtener la client_addr osea la direccion
# tambien vamos a obtener la con, osea la conexion que servira para enviar datos y recibir datos
con, client_addr =  sock.accept()
text = "Hola, soy el servidor!" # El texto que enviaremos
con.send(text.encode()) # Enviamos el texto al cliente que se conecta

con.close() # Cerramos la conexion
sock.close() # Cerramos el socket

Cliente en Python

Ahora el código del cliente, también con comentarios.

# Importamos las librerias necesarias
import socket
# Establecemos el tipo de socket/conexion
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 5000 # Puerto de comunicacion
# Realizamos la conexion al la IP y puerto
sock.connect(('localhost',port))
# Leemos los datos del servidor
data = sock.recv(4096)
# Cerramos el socket
sock.close()
# Mostramos los datos recibidos
print(data.decode())

Ejecutando los Scripts

Ahora que ya tenemos los 2 scripts, vamos a ejecutarlos, se deben ejecutar de manera separada.

En una terminal vamos a ejecutar el servidor y en otra terminal ejecutamos el cliente.

Terminal con el servidor

Al ejecutar la terminal con el servidor, este va a esperar en el puerto 5000, una vez que un cliente se conecte le va a enviar el mensaje y se va a cerrar.

Terminal con el cliente

El script cliente se conecta directamente al puerto 5000, recibe y muestra el texto recibido.

Finalizando

Podemos modificar el cliente y el servidor y modificiar el Puerto o  el mensaje, si modifics el host y el Puerto de el script script cliente pueden conectarse con otros sitios tener otro resultados, por ejemplo  conectarte google.com en el Puerto 80.

En proximos articulos veremos otros ejemplos de sockets.

Agustin Ramos

Desarrollador de Software

Leave a Reply