La librería pickle de Python es una herramienta muy útil para la serialización y deserialización de objetos Python. La serialización se refiere al proceso de convertir un objeto Python en un flujo de bytes, que se puede guardar en un archivo o transmitir a través de una red (como haremos con sockets más adelante), mientras que la deserialización es el proceso inverso, que consiste en reconstruir el objeto Python a partir de los datos serializados.

import pickle
 
# Serialización
data = {"nombre": "Juan", "edad": 30}
serialized_data = pickle.dumps(data)
print(f"Serialized data: {serialized_data}")
 
# Deserialización
deserialized_data = pickle.loads(serialized_data)
print(f"Deserialized data: {deserialized_data}")

SOCKETS + PICKLE

Es posible enviar datos a través de un socket utilizando la librería pickle de Python. La serialización y deserialización de los datos se realiza automáticamente mediante pickle, lo que simplifica mucho el proceso de enviar y recibir objetos complejos a través de un socket.

EL QUE ENVÍA EL MENSAJE:

import socket
import pickle
 
client_socket = socket.socket()
client_socket.connect(('192.168.0.19', 5000))
 
data = {"nombre": "Juan", "edad": 30}
mensaje_serializado = pickle.dumps(data)
client_socket.send(mensaje_serializado)
 
client_socket.close()

EL QUE RECIBE EL MENSAJE

import socket
import pickle
 
server_socket = socket.socket()
server_socket.bind(('192.168.0.19', 5000))
server_socket.listen(1)
 
client_socket, client_address = server_socket.accept()
message = client_socket.recv(1024)
 
mensaje_desserializado = pickle.loads(message)
print(f"Received: {mensaje_desserializado}")
 
client_socket.close()
server_socket.close()

Y vemos que se envió correctamente el mensaje: