Programación de sockets en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/NetworkingGroup(["Networking"]) python/NetworkingGroup -.-> python/socket_programming("Socket Programming") subgraph Lab Skills python/socket_programming -.-> lab-271592{{"Programación de sockets en Python"}} end

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.

  1. Abra un nuevo archivo de Python llamado server.py en el directorio ~/project.
  2. 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)
  1. Abra otro archivo de Python llamado client.py en el directorio ~/project.
  2. 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.

  1. Modifique el código de server.py para 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())
  1. Modifique el código de client.py para 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.