Programmation des sockets Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous allons explorer le monde de la programmation socket en Python, dans le scénario magique d'un carnaval animé et présentant le personnage excentrique d'un artiste de ballons fantastique. Le carnaval est bondé d'excitation et d'énergie, et l'artiste de ballons fantastique enchante le public avec ses créations spectaculaires. L'objectif de ce laboratoire est de plonger dans le domaine de la programmation socket et de tisser nos propres connexions réseau magiques tout comme les créations de ballons fascinantes du carnaval.

Établissement d'une communication client-serveur de base

Dans cette étape, nous allons créer une connexion client-serveur simple en utilisant la programmation socket en Python. Le client et le serveur communiqueront et échangent des données dans une interaction de base.

  1. Ouvrez un nouveau fichier Python nommé server.py dans le répertoire ~/project.
  2. Implémentez le code côté serveur dans 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('Connecté par', address)
    while True:
        data = connection.recv(1024)
        if not data:
            break
        connection.sendall(data)
  1. Ouvrez un autre fichier Python nommé client.py dans le répertoire ~/project.
  2. Implémentez le code côté client dans 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('Reçu', repr(data))

Exécutez ces deux fichiers en même temps et cliquez sur "Split Terminal" pour le faire. Les informations suivantes devraient s'afficher sur votre terminal :

labex:project/ $ python server.py
Connecté par ('127.0.0.1', 40082)
labex:project/ $ python client.py
Reçu b'Hello, server'

Amélioration de la sérialisation des données pour la communication

Dans cette étape, nous allons améliorer la communication entre le client et le serveur en sérialisant et désérialisant les données pour la transmission.

  1. Modifiez le code server.py pour inclure la sérialisation et la désérialisation des données.
## 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('Connecté par', 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. Modifiez le code client.py pour inclure la sérialisation et la désérialisation des données.
## 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('Reçu', received_data.decode())

Exécutez ces deux fichiers en même temps et cliquez sur "Split Terminal" pour le faire. Les informations suivantes devraient s'afficher sur votre terminal :

labex:project/ $ python server.py
Connecté par ('127.0.0.1', 40082)
labex:project/ $ python client.py
Reçu HELLO, SERVER

Résumé

Dans ce laboratoire, nous sommes plongés dans le monde enchanté de la programmation socket en Python, en tirant inspiration de l'ambiance magique du carnaval et des créations de l'artiste de ballons fantastique. En vous guidant à travers les étapes de création de connexions client-serveur, d'amélioration de la communication avec la sérialisation de données et bien d'autres, notre objectif était de vous offrir une expérience immersive et éducative, vous permettant de maîtriser l'art de la programmation socket et de vous émerveiller devant les merveilleuses connexions qu'elle peut tisser.