Jusqu'à -30%, seulement jusqu'au 30/06 :
livres en ligne, vidéos & formations. Cliquez ici
Jusqu'au 30/06 : En cliquant ici, bénéficiez jusqu'à
30% de réduction sur votre panier. Je découvre !
  1. Livres & vidéos
  2. Framework PyQt
  3. Réseaux et gestion des couches basses en PyQt
Extrait - Framework PyQt Développez vos interfaces graphiques en Python avec PyQt6
Extraits du livre
Framework PyQt Développez vos interfaces graphiques en Python avec PyQt6 Revenir à la page d'achat du livre

Réseaux et gestion des couches basses en PyQt

Introduction

Les fonctionnalités de Qt, et par conséquent de PyQt, couvrent un très large spectre du développement logiciel, allant de l’affichage graphique à la gestion avancée des événements, en passant par l’accès aux bases de données et les communications réseau. Ce dernier aspect, souvent sous-estimé, joue pourtant un rôle fondamental dans la conception d’applications modernes, notamment celles qui nécessitent des échanges de données en temps réel, une interaction avec des services distants ou la mise en place de protocoles de communication spécifiques.

Avant d’explorer la mise en œuvre des communications réseau avec PyQt, il est essentiel de bien comprendre les bases théoriques sous-jacentes. Nous allons donc revenir sur quelques définitions essentielles.

Le modèle OSI (Open Systems Interconnection) est un modèle de référence définissant l’organisation des communications entre ordinateurs. Il est structuré en sept couches, dont trois couches matérielles (1 à 3) et quatre couches applicatives (4 à 7). Ce modèle permet de comprendre comment les données transitent à travers un réseau et comment chaque protocole s’intègre dans cette architecture.

L’une des méthodes fondamentales...

PyQt et les sockets

1. Introduction

Si l’on souhaite faire transiter des données sur un réseau, la solution la plus courante consiste à utiliser le protocole TCP/IP, qui repose sur l’utilisation des sockets. Comme mentionné précédemment, TCP (Transmission Control Protocol) relève de la couche 4 du modèle OSI, c’est-à-dire la couche de transport, tandis qu’IP (Internet Protocol) appartient à la couche 3, qui correspond à la couche réseau et assure le routage des paquets de données. Ensemble, ces deux protocoles garantissent une communication fiable entre machines, qu’il s’agisse d’un simple échange de messages ou du transfert de fichiers volumineux.

Une socket peut être vue comme un point d’entrée vers le réseau, ou plus précisément comme un canal de communication permettant aux applications d’échanger des données. Pour fonctionner, une socket est définie par plusieurs paramètres essentiels :

  • L’adresse hôte, qui est une adresse IP (IPv4 ou IPv6) et permet d’identifier de manière unique une machine sur un réseau. Cette adresse...

PyQt et les requêtes HTTP

1. Introduction

Dans les sections précédentes, nous avons abordé le modèle OSI. Si nous devions y situer le protocole HTTP, nous le placerions dans la septième couche, appelée couche application.

HTTP, acronyme de Hypertext Transfer Protocol, est le protocole de communication client-serveur utilisé par le Web. Il définit les règles permettant à un client (généralement un navigateur web) et à un serveur web d’échanger des données, qu’il s’agisse de pages HTML, d’images, de vidéos ou d’autres types de ressources.

HTTPS (Hypertext Transfer Protocol Secure) est la version sécurisée de HTTP. Il ajoute un chiffrement des données à l’aide du protocole TLS (Transport Layer Security), garantissant ainsi la confidentialité et l’intégrité des échanges entre le client et le serveur. Ce chiffrement protège contre les interceptions malveillantes (man-in-the-middle attacks) et empêche l’altération des données en transit.

Sur le plan technique, HTTP repose généralement sur le protocole TCP au niveau de la couche transport (couche 4 du modèle OSI). Les communications HTTP se font par défaut sur le port 80, tandis que HTTPS utilise le port 443.

Un client HTTP, comme un navigateur web (Chrome, Firefox, Safari, etc.), peut interagir avec un serveur HTTP en effectuant différentes actions appelées méthodes HTTP. Parmi les plus couramment utilisées, on retrouve :

  • GET : permet d’obtenir une ressource depuis le serveur.

  • HEAD : récupère uniquement les en-têtes HTTP associés à une ressource, sans en télécharger le contenu.

  • POST : envoie des données vers le serveur pour créer ou modifier une ressource. 

  • DELETE : demande la suppression d’une ressource sur le serveur.

Dans cette partie, nous utiliserons deux classes essentielles de PyQt6 pour interagir avec des serveurs HTTP :

  • QNetworkAccessManager : cette classe gère les connexions réseau et permet d’envoyer des requêtes HTTP et HTTPS.

  • QNetworkRequest : elle encapsule une requête HTTP, définissant...

Conclusion

Au cours de ce chapitre, nous avons exploré les fondements de la programmation réseau avec PyQt6, en nous concentrant sur les protocoles TCP, UDP et HTTP. Nous avons appris à établir des connexions TCP fiables en utilisant des classes telles que QTcpSocket et QTcpServer, permettant une communication orientée connexion. Pour les communications sans connexion, nous avons utilisé QUdpSocket afin d’envoyer et de recevoir des datagrammes UDP. De plus, nous avons découvert comment effectuer des requêtes HTTP en employant QNetworkAccessManager et QNetworkRequest, facilitant ainsi les interactions avec des services web.

Dans le prochain chapitre, nous aborderons le multithreading en PyQt6. Nous verrons comment exécuter des tâches longues en arrière-plan sans bloquer l’interface utilisateur, en utilisant des classes telles que QThread et QThreadPool. Cette approche permettra de maintenir des applications réactives et fluides, même lors de traitements intensifs.