Introducción
En este laboratorio, exploraremos el mundo de la programación de sockets en Python, situado en el mágico escenario de un vibrante carnaval y protagonizado por el caprichoso personaje de un artista de globos fantásticos. El carnaval está bullendo de emoción y energía, y el artista de globos fantásticos encanta a la audiencia con sus espectaculares creaciones. El objetivo de este laboratorio es sumergirse en el mundo de la programación de sockets y tejer nuestras propias conexiones mágicas de red, al igual que las hipnóticas creaciones de globos en el carnaval.
Estableciendo la comunicación básica cliente-servidor
En este paso, crearemos una conexión simple cliente-servidor utilizando la programación de sockets de Python. El cliente y el servidor se comunicarán y cambiarán datos en una interacción básica.
- Abra un nuevo archivo de Python llamado
server.pyen el directorio~/project. - Implemente el código del lado del servidor en
server.py.
## server.py
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)
connection, address = server_socket.accept()
with connection:
print('Connected by', address)
while True:
data = connection.recv(1024)
if not data:
break
connection.sendall(data)
- Abra otro archivo de Python llamado
client.pyen el directorio~/project. - Implemente el código del lado del cliente en
client.py.
## client.py
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
client_socket.sendall(b'Hello, server')
data = client_socket.recv(1024)
print('Received', repr(data))
Ejecute estos dos archivos al mismo tiempo y haga clic en "Split Terminal" para lograrlo. La información siguiente debe aparecer en su terminal:
labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received b'Hello, server'
Mejora de la serialización de datos para la comunicación
En este paso, mejoraremos la comunicación entre el cliente y el servidor serializando y deserializando datos para su transmisión.
- Modifique el código de
server.pypara incluir la serialización y deserialización de datos.
## server.py
import socket
import pickle
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)
connection, address = server_socket.accept()
with connection:
print('Connected by', address)
while True:
data = connection.recv(1024)
if not data:
break
deserialized_data = pickle.loads(data)
processed_data = deserialized_data.upper()
connection.sendall(processed_data.encode())
- Modifique el código de
client.pypara incluir la serialización y deserialización de datos.
## client.py
import socket
import pickle
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
data_to_send = pickle.dumps('Hello, server')
client_socket.sendall(data_to_send)
received_data = client_socket.recv(1024)
print('Received', received_data.decode())
Ejecute estos dos archivos al mismo tiempo y haga clic en "Split Terminal" para lograrlo. La información siguiente debe aparecer en su terminal:
labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received HELLO, SERVER
Resumen
En este laboratorio, sumergimos en el encantador mundo de la programación de sockets de Python, inspirándonos en la atmósfera mágica del carnaval y las creaciones del artista de globos fantásticos. Al guiarte a través de los pasos para crear conexiones cliente-servidor, mejorar la comunicación con la serialización de datos y más, tuvimos como objetivo brindarte una experiencia inmersiva y educativa, capacitándote para dominar el arte de la programación de sockets y deleitarte con las maravillosas conexiones que pueden tejer.



