Comprendre les bases des sockets et créer votre premier socket
Commençons par comprendre ce que sont les sockets et comment ils fonctionnent en Python. Nous allons ensuite créer notre premier socket pour voir comment il est initialisé.
Que sont les sockets Python ?
Les sockets sont des points d'extrémité pour l'envoi et la réception de données sur un réseau. Ils fournissent une interface de programmation pour la communication réseau, permettant aux applications d'échanger des informations quel que soit leur emplacement.
En programmation réseau, nous utilisons généralement un modèle client-serveur :
- Le serveur attend les connexions entrantes et traite les requêtes
- Le client initie la communication en se connectant au serveur
Le module socket intégré de Python facilite l'utilisation des sockets sans avoir à comprendre tous les détails complexes des protocoles réseau.
Types de sockets
Les deux types de sockets les plus courants sont :
- TCP (Transmission Control Protocol) : Fournit une livraison de données fiable et ordonnée
- UDP (User Datagram Protocol) : Fournit une transmission de données plus rapide mais non fiable
Pour ce lab, nous nous concentrerons sur les sockets TCP, qui sont le type le plus couramment utilisé pour les applications nécessitant une communication fiable.
Créer votre premier socket
Créons un script Python simple pour initialiser un socket. Ouvrez le WebIDE et suivez ces étapes :
- Tout d'abord, créons un répertoire pour notre projet de programmation de sockets :
mkdir -p ~/project/socket_lab
cd ~/project/socket_lab
- Maintenant, créez un nouveau fichier Python appelé
socket_basics.py :
Dans le WebIDE, cliquez sur le bouton "New File" ou utilisez le menu "File" et sélectionnez "New File", puis nommez-le socket_basics.py dans le répertoire socket_lab.
- Ajoutez le code suivant pour démontrer comment créer un socket :
import socket
## Creating a socket
print("Creating a new socket...")
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(f"Socket created: {my_socket}")
## Explaining the parameters:
print("\nSocket parameters explained:")
print("AF_INET: Using IPv4 addressing")
print("SOCK_STREAM: Using TCP protocol for reliable data transmission")
## Getting available socket methods
print("\nSome methods available on socket objects:")
methods = [method for method in dir(my_socket) if not method.startswith('_')]
print(', '.join(methods[:10]) + '...') ## Showing first 10 methods
## Closing the socket
my_socket.close()
print("\nSocket closed")
-
Enregistrez le fichier.
-
Exécutez le script pour voir la sortie :
python3 ~/project/socket_lab/socket_basics.py
Vous devriez voir une sortie similaire à celle-ci :
Creating a new socket...
Socket created: <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 0)>
Socket parameters explained:
AF_INET: Using IPv4 addressing
SOCK_STREAM: Using TCP protocol for reliable data transmission
Some methods available on socket objects:
accept, bind, close, connect, connect_ex, detach, fileno, getpeername, getsockname, getsockopt...
Socket closed
Cette sortie montre que nous avons créé avec succès un objet socket et exploré certaines de ses propriétés. Dans les sections suivantes, nous utiliserons des sockets pour construire une application serveur et client qui peuvent communiquer entre elles.
Fonctions clés des sockets
Avant de continuer, comprenons quelques fonctions clés des sockets que nous allons utiliser :
socket() - Crée un nouvel objet socket
bind() - Associe le socket à une interface réseau et un port spécifiques
listen() - Permet au serveur d'accepter les connexions
accept() - Accepte une connexion d'un client
connect() - Se connecte à une adresse distante
send() - Envoie des données à un socket connecté
recv() - Reçoit des données d'un socket connecté
close() - Ferme le socket
Dans l'étape suivante, nous allons créer un serveur en utilisant ces fonctions.