Travaux Pratique programmation réseau avec QT4



Documents pareils
Ingénérie logicielle dirigée par les modèles

Chapitre 2. Classes et objets

alg - Classes, instances, objets [oo] Exercices résolus

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TD/TP PAC - Programmation n 3

Gestion distribuée (par sockets) de banque en Java

TRIGONOMETRIE Algorithme : mesure principale

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

PG208, Projet n 3 : Serveur HTTP évolué

Application web de gestion de comptes en banques

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

C++ - Classes, instances, objets [oo] Exercices résolus

Programmation sous QT

PROJET 1 : BASE DE DONNÉES REPARTIES

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Corrigés des premiers exercices sur les classes

Premiers Pas en Programmation Objet : les Classes et les Objets

Programme Compte bancaire (code)

Pré-conditions : Evénement déclencheur : le client souhaite un virement. Description du déroulement du cas : Description des Use cases

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

2. Comprendre les définitions de classes

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

NOTICE UTILISATION XL POS 9 CAISSE

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Carte Rémunération FAQ (Foire Aux Questions)

Portail du Consommateur. Guide d utilisation. Du dépôt de requêtes

CONCEPTION ET IMPLANTATION DES SI PROJET : GESTION DU FOYER DE L ENIT

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation Objet - Cours II

TECHNOLOGIE DE SECURITE INNOVANTE ET SANS FIL

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

ALERT NOTICE D UTILISATION DU DRIVER PC-TEXTE

GUIDE DE PAIEMENT. Pour Bien Effectuer votre Paiement, veuillez suivre les instructions suivantes :

Cours d Algorithmique et de Langage C v 3.0

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement


Poker. A rendre pour le 25 avril

Solutions du chapitre 4

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Carte Activity FAQ (Foire aux Questions)

Cours de Systèmes d Exploitation

CARTE BANCAIRE RECHARGEABLE

TD/TP PAC - Programmation n 3

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Warren PAULUS Robin GODEFROID. C++ - Interface Graphique avec Visual Studio 2010

ANALYSE TRAMEs LIAISON SERIE

TP1 : Initiation à Java et Eclipse

Notice d Installation et d utilisation d une liaison Bluetooth avec un PDA ipaq.

Direction des technologies de l information GUIDE D UTILISATION PAPERCUT À L INTENTION DES ÉTUDIANTS

UML et les Bases de Données

Installation poste de travail. Version /02/2011

Projet Active Object

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Installation et configuration du logiciel BauBit

Tutorial Terminal Server sous

Applet pour visualiser les variables «automate» notifiées

ALERT NOTICE D UTILISATION DU DRIVER VOCALYS. (Cesa 200 bauds / Contact-ID)

Package Java.util Classe générique

MODULE DES ENCAISSEMENTS. Outil de comptabilisation et de transfert de revenus des établissements au Service des finances GUIDE TECHNIQUE

Les structures de données. Rajae El Ouazzani

Master d Informatique Corrigé du partiel novembre 2010

Télécharger le fichier de la Télécharger le fichier de la Télécharger le fichier de la Télécharger le fichier de la...

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

La monétique. Les transactions bancaires. Christophe VANTET- IR3 Le Mardi 25 Novembre 2008

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Programmation par composants (1/3) Programmation par composants (2/3)

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

L exclusion mutuelle distribuée

GUI Client in HomeSIP Project

Remote Method Invocation (RMI)

I. Introduction aux fonctions : les fonctions standards

Modéliser ses fenêtres avec Qt Designer

INITIATION AU LANGAGE JAVA

Manipulation 4 : Application de «Change».

Introduction : les processus. Introduction : les threads. Plan

TP2 : Client d une BDD SqlServer

Conception et constitution d une base de données de scans laser terrestres et de données forestières de validation.

TP4 : Installer configurer un contrôleur de domaine

Les structures. Chapitre 3

Conseils de sécurité lors de l utilisation d Internet, des cartes bancaires et de l e-banking.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Modifier les propriétés d'un widget

Guide d utilisation de PL7 Pro Récupérer ou transférer un programme

Le Service de Télétransmission par Internet des banques du Réseau OCÉOR GUIDE UTILISATEURS. Version V1.0

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Application 1- VBA : Test de comportements d'investissements

Guide d utilisation du service de transfert sécurisé de fichiers. Édition du 3 octobre 2011

Cette option est aussi disponible sur les clients Windows 7 sous la forme d un cache réparti entre les différentes machines.

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Polytech Montpellier IG PROJET C Réseaux sociaux : recherche de composantes fortement connexes

KWISATZ MODULE PRESTASHOP

L'architecture MVC avec les widgets complexes

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Modéliser ses fenêtres avec Qt Designer

COMMUTEL PRO VM3 INTERFACE GSM VOIX POUR EMULATION DE LIGNE RTC ET TRANSMETTEUR DE SMS D ALERTES ET TECHNIQUES.

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Logiciel PICAXE Programming Editor

Transcription:

S.T.S. Système Numérique Informatique et Réseaux Travaux Pratique programmation réseau avec QT4 1. OBJECTIF Utilisation des sockets avec la bibliothèque QT4 Mettre en pratique les sockets en mode événementiel. Utiliser cette propriété pour réaliser un serveur multi-clients. Points techniques abordés : Codage de l information Programmation sockets avec QT4. Communication réseau 2. CONDITIONS DE RÉALISATION Travail individuel sur micro-ordinateurs avec QT Creator Un serveur et un client sont disponibles pour la mise au point. Compte rendu et code à rendre. 3. RESSOURCES Les classes «socket» dans la technologie QT, consulter le site http://doc.qt.nokia.com/4.7/qtnetwork.html et plus particulièrement les classes, QTcpSocket, QTcpServeur. 4. LE BESOIN Les distributeurs automatiques de billets (DAB) permettent de se connecter à la banque. Ils offrent la possibilité d interroger un compte pour en connaître le solde, de déposer de l argent et d en retirer. C'est ces fonctionnalités que nous allons étudier dans un premier temps côté client (sur le DAB) puis côté serveur (à la banque).

5. BANQUE ~ CÔTÉ CLIENT 5.1. Création du projet Créez le projet ClientBanque de type Application graphique en C++ sous QT4 avec QT Creator. La classe principale ce nomme DAB_MainWindow elle hérite de QMainWindow comme le montre le diagramme de classes partiel ci-dessous. C est la seule classe ou vous aurez à intervenir. QMainWindow QIODevice QAbstractSocket DAB_MainWindow SocketC lientbanque 1 1 QTcpSocket De même, ajoutez l attribut réalisant la liaison avec la classe QTcpSocket. 5.2. Création de l'ihm L interface du client aura l aspect suivant : Nommez chaque Widget de manière à ce qu il conserve son type de Widget et le nom auquel il se rapporte, exemple : listwidgetetat Tant que la connexion avec la banque n est pas établie, les opérations vers la banque ne sont pas possibles (les boutons sont désactivés), la zone d édition pour les messages de la banque est en lecture seule. Le listwidget contenant l état de la connexion avec la banque indique les différents états de la connexion et les messages d erreur système. Le bouton Connexion devient Déconnexion lorsque la connexion est établie. STS SNir - LPo Touchard-Washington Le Mans page 2

Fonctionnalités attendues du distributeur automatique de billets : Mise sous tension Attente client Connexion Deconnexion Deconnexion Connecté à la banque Numéro de compte reconnu Numéro de compte inconnu Envoi [Solde] Mise en relation avec le compte Envoi [Dépot] Envoi [Retrait] Comme l indique le diagramme à états ci-dessus, c est seulement lorsque le client est connecté à la banque et que son numéro de compte est reconnu que les opérations vers la banque peuvent être réalisées (par sécurité, les opérations sont désactivées sur l'ihm). La déconnexion reste possible à chaque état. 5.3. Utilisation de la classe QTcpSocket Après l'initialisation de l attribut représentant le lien entre les classes DAB_MainWindow et QTcpSocket, reliez les signaux en provenance du socket client, la connexion au serveur, sa déconnexion et la présence de données à lire à des slots chargés du traitement correspondant dans la classe gérant l'ihm. Chaque connexion entre signaux et slots doit faire l objet d un test avec l apparition d une boîte de message indiquant l erreur et fermant l application. L état de la connexion avec le serveur de la banque est reporté dans le listwidget prévu à cet effet. Réalisez le code nécessaire pour l envoi du numéro de compte vers la banque le numéro est transmis s il est supérieur à 0. La trame à transmettre se décompose ainsi : Taille des données Commande Valeur De type quint16 Le caractère 'N' sous la forme d un Qchar Un entier (type int) Réalisez le code nécessaire pour recevoir la réponse de la banque et l afficher dans la zone d édition prévue à cet effet. Taille des données De type quint16 Commande Une chaîne de caractère sous la forme d une QString. STS SNir - LPo Touchard-Washington Le Mans page 3

Opérations vers la banque : Lors de l affichage de l'ihm du distributeur, on souhaite que le Bouton radio Solde soit coché par défaut. Réalisez le code nécessaire dans la méthode qui vous semble la plus appropriée. L appui sur le bouton Envoi doit envoyer à travers le socket le type d opération souhaité, suivi éventuellement du montant de la transaction suivant le format de trame : Taille des données Opération Montant De type quint16 Le caractère 'R' sous la forme d un Qchar Un réel (type float) De type quint16 Le caractère 'D' sous la forme d un Qchar Un réel (type float) De type quint16 Le caractère 'S' sous la forme d un Qchar Sans objet Pour la réponse de la banque si tout va bien vous n avez rien à faire 6. BANQUE ~ CÔTÉ SERVEUR Que se passe t'il lorsqu une deuxième instance du client essaye de se connecter au serveur. Les opérations sont-elles possibles simultanément sur deux comptes différents? 6.1. Création du projet Créez le projet ServeurBanque de type Application graphique en C++ sous QT4 avec QT Creator. La classe principale se nomme BanqueMainWindow elle hérite de QMainWindow comme le montre le diagramme de classes partiel ci-dessous. QIODevice QTcpServer QAbstractSocket QMainWindow QTcpSocket BanqueMainWindow 1 leserveur 1 ServeurBanque ServeurBanque () ~ServeurBanque() Start() Stop() Envoye rmessage() slotne wconnection() slotclientdisconnected() slotreadyread() lesconnexionclients * CompteClient num Com pte : integer solde : float Deposer() Retirer() O btenirsolde() DefinirNum Com pte() O btenirnum Com pte() Com pteclient() L IHM de la banque comporte juste un bouton Quitter qui ferme l application. Réalisez ce traitement. STS SNir - LPo Touchard-Washington Le Mans page 4

Réalisation de la classe ServeurBanque (1 ère Partie) : Pour la gestion du serveur de la banque, on propose la classe ServeurBanque qui hérite de la classe QTcpServer comme le montre le diagramme de classes. Le constructeur de la classe ServeurBanque prend comme paramètre d entrée un pointeur sur un QObject par défaut initialisé à 0 qui sera transmis au constructeur de la classe de base. Il initialise également la liaison entre le signal indiquant la présence de la connexion d un nouveau client au slot correspondant. En cas d erreur une boîte de message apparaît signalant que la liaison n a pu avoir lieu. La méthode ServeurBanque::Start() lance si cela est possible, l écoute du socket sur toutes les interfaces réseaux de l ordinateur sur le port 8888. Si l écoute n est pas possible, une boîte de message signale l erreur et ferme le socket Serveur. Après avoir initialisé l attribut leserveur dans la classe BanqueMainWindow comme le préconise le diagramme de classes, la méthode est ServeurBanque::Start() appelée. Pour la testé, lancez une première fois l application, elle se lance, relancez la une deuxième fois la boîte indiquant l erreur de l écoute du socket doit apparaître. La méthode ServeurBanque::Stop() est chargé de fermé le socket serveur. De même pour le destructeur. Réalisation de la classe CompteClient : Déclarer la classe CompteClient comme le montre le diagramme de classes. Le constructeur de la classe CompteClient prend comme paramètre d entrée un pointeur sur un QObject par défaut initialisé à 0 qui sera transmis au constructeur de la classe de base. La méthode CompteClient ::DefinirNumCompte prend un entier en paramètre d entrée qui initialise l attribut numcompte et fixe le solde à 200 euros. La méthode CompteClient ::Deposer prend un réel en entrée et ajoute sa valeur au solde du client. La méthode CompteClient ::Retirer prend un réel en entrée si cela est possible la valeur est retranchée et la méthode retourne vrai. Sinon le paramètre de retour prend la valeur faux, la banque n accepte pas de découvert. La méthode CompteClient ::ObtenirSolde retourne la valeur du solde du compte du client. Enfin, la méthode CompteClient ::ObtenirNumCompte retourne le numéro du compte client. STS SNir - LPo Touchard-Washington Le Mans page 5

Suite de la classe ServeurBanque : Le slot ServeurBanque::SlotNewConnection a pour objectif d accepter les différents sockets client qui tentent de se connecter au serveur. L algorithme de haut niveau ci-dessous présente le traitement à effectuer hors-mis les traitements d erreurs qui devront être ajoutés. Tant qu il y a des connexions en attente client la connexion du client suivant Association des signaux indiquant des données à lire et la déconnexion en provenance du client aux deux autres slots de la classe ServeurBanque. Ajout du client dans la QList représentant les connexions des différents clients. Envoi d un message au client lui demandant son numéro de compte. Fin tantque. Réalisez le code de la méthode ServeurBanque::EnvoyezMessage. Comme son nom l'indique, elle est chargée d'envoyer un message sous la forme d'un QString passé en paramètre au client dont le pointeur est également passé en paramètre. Le code du slot ServeurBanque::slotClientDisconnected est donné ci-après, void ServeurBanque::slotClientDisconnected() { CompteClient *client = (CompteClient *)sender(); } if (!client) { QMessageBox messagebox; messagebox.settext("erreur slotclientdisconnected"); messagebox.exec(); } else { lesconnexionclients.removeone(client); client->deletelater(); } La méthode QObject::sender retourne le pointeur sur l objet qui à envoyer le signal. La méthode QList::removeOne suprime l objet passé en paramètre de la liste. À partir du code précédent réaliser le slot ServeurBanque::slotReadyRead qui réagit lorsque des données sont à lire en provenance d un client. Il est dans un premier temps nécessaire de rechercher de quel client il s agit. Vous vous attacherez ici à répondre aux besoins du client décrit dans la première partie. Comme Bonus, réalisez le code nécessaire pour qu un client retrouve le solde qu il a laissé lors de sa dernière connexion (voir QFile, QDir...). STS SNir - LPo Touchard-Washington Le Mans page 6