Sockets Python : guide complet pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Que sont les sockets en Python et comment ils fonctionnent

Un socket est une interface logicielle qui permet une communication bidirectionnelle entre deux nœuds d'un réseau informatique. C'est une prise virtuelle à travers laquelle les applications peuvent envoyer et recevoir des données sur le réseau.

Les applications réseau modernes utilisent activement les sockets Python pour créer divers systèmes. Des messageries instantanées aux jeux en ligne et aux services d'échange de données — partout, l'interaction réseau passe par les sockets.

Concepts fondamentaux de la programmation réseau

Pour travailler avec les sockets en Python, il est essentiel de comprendre les concepts clés suivants :

  • Adresse IP — l'adresse unique d'un périphérique sur le réseau
  • Port — un identifiant numérique d'un service sur un périphérique
  • TCP (Transmission Control Protocol) — un protocole fiable de transmission de données
  • UDP (User Datagram Protocol) — un protocole rapide sans accusé de réception

TCP garantit une livraison fiable des données avec contrôle des erreurs. UDP est plus rapide mais ne garantit pas la livraison des messages.

Configuration et importation de la bibliothèque socket

Le module socket fait partie de la bibliothèque standard de Python. Pour commencer à travailler avec les sockets, il suffit d'importer le module :

import socket

Aucune installation supplémentaire n'est nécessaire. La bibliothèque socket est disponible par défaut dans toutes les versions de Python.

Création d'un serveur TCP en Python

Implémentation de base du serveur

Un serveur TCP accepte les connexions des clients et traite leurs requêtes. Voici une implémentation simple :

import socket

# Création d'un socket TCP
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Liaison à une adresse et un port
server_socket.bind(('localhost', 12345))

# Début de l'écoute (maximum 5 connexions en file d'attente)
server_socket.listen(5)

print("Serveur démarré. Attente de connexions...")

while True:
    # Acceptation de la connexion
    client_socket, address = server_socket.accept()
    print(f"Connexion depuis {address}")
    
    # Réception du message
    message = client_socket.recv(1024).decode('utf-8')
    print(f"Message reçu : {message}")
    
    # Envoi de la réponse
    client_socket.send("Bonjour du serveur !".encode('utf-8'))
    
    # Fermeture de la connexion avec le client
    client_socket.close()

Comprendre le fonctionnement du serveur

Dans le code ci-dessus, les opérations suivantes se déroulent :

  1. Un socket est créé en utilisant le protocole TCP
  2. Le serveur se lie à l'adresse localhost et au port 12345
  3. L'écoute des connexions client est lancée
  4. Lorsqu'un client se connecte, son message est reçu
  5. Le serveur envoie une réponse et ferme la connexion

La méthode socket.AF_INET indique l'utilisation d'IPv4, et socket.SOCK_STREAM celle du protocole TCP.

Développement d'un client TCP

Un client TCP se connecte au serveur et échange des données avec lui. Exemple d'implémentation du client :

import socket

# Création du socket client
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connexion au serveur
client_socket.connect(('localhost', 12345))

# Envoi du message
client_socket.send("Bonjour, serveur !".encode('utf-8'))

# Réception de la réponse
response = client_socket.recv(1024).decode('utf-8')
print(f"Réponse du serveur : {response}")

# Fermeture de la connexion
client_socket.close()

Le client exécute une séquence d'actions : connexion, envoi de données, réception de la réponse et fermeture de la connexion.

Travailler avec le protocole UDP

UDP offre un moyen plus rapide de transmettre des données sans garantie de livraison. Cela le rend adapté aux applications en temps réel.

Serveur UDP


                    

Blogs

Book Recommendations