Introduction à la programmation réseau Python

La programmation réseau implique l'écriture de logiciels qui communiquent sur un réseau. Python, avec son riche ensemble de bibliothèques, facilite le développement d'applications réseau. Cet article propose une introduction à la programmation réseau Python, couvrant les concepts de base et offrant des exemples pour vous aider à démarrer.

Configuration de l'environnement

Avant de vous lancer dans la programmation réseau, assurez-vous d'avoir installé Python. Vous aurez également besoin de la bibliothèque `socket`, qui est incluse dans la bibliothèque standard de Python, donc aucune installation supplémentaire n'est requise.

Comprendre les sockets

Un socket est un point de terminaison permettant d'envoyer ou de recevoir des données sur un réseau. La bibliothèque `socket` de Python fournit une interface pour la communication réseau à l'aide de sockets.

Créer un serveur TCP simple

Voici un exemple de serveur TCP de base qui écoute les connexions entrantes et les gère:

import socket

def start_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print(f'Server listening on {host}:{port}')

    while True:
        client_socket, address = server_socket.accept()
        print(f'Connection from {address}')
        client_socket.sendall(b'Hello, client!')
        client_socket.close()

if __name__ == "__main__":
    start_server()

Création d'un client TCP simple

Voici un exemple de client qui se connecte au serveur et reçoit un message:

import socket

def connect_to_server(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((host, port))
    message = client_socket.recv(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    connect_to_server()

Comprendre UDP

UDP (User Datagram Protocol) est un autre protocole utilisé pour la communication réseau. Contrairement à TCP, UDP ne garantit pas la livraison, la commande ou la vérification des erreurs. Voici un exemple de base de communication UDP:

Serveur UDP

import socket

def start_udp_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind((host, port))
    print(f'UDP server listening on {host}:{port}')

    while True:
        message, address = server_socket.recvfrom(1024)
        print(f'Received message from {address}: {message.decode()}')
        server_socket.sendto(b'Hello, UDP client!', address)

if __name__ == "__main__":
    start_udp_server()

Client UDP

import socket

def send_udp_message(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client_socket.sendto(b'Hello, UDP server!', (host, port))
    message, _ = client_socket.recvfrom(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    send_udp_message()

Conclusion

La bibliothèque « socket » de Python fournit une base solide pour la programmation réseau, vous permettant de créer des applications TCP et UDP. En comprenant les opérations et les protocoles de base des sockets, vous pouvez créer une variété d'applications et de services en réseau. Continuez à explorer les capacités réseau de Python pour développer des solutions réseau plus sophistiquées et plus fiables.