SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
UNIVERSITE ABDELMALEK ESSAADI
ECOLE NATIONALE DES SCIENCES APPLIQUEES DE TETOUAN
 Réalisé par : Encadré par :
Azghiri Walid Mr. Tabii Younes
Tbatou Sanae
Rapport d’une application de chat
client/serveur
1
Sommaire
I. Introduction
II. Remerciements
III. Contexte général du projet
A. L’objet du projet
B. Présentation du projet
IV. Implémentation
V. Environnement de développement
VI. Réalisation et mise en œuvre
VII. Conclusion
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 2
I. Introduction
e présent rapport décrit la réalisation d’une application de chat
client /serveur en utilisant les sockets. Ce dernier est le point de
communication par lequel un processus peut émettre ou recevoir
des données.
Ce projet avait pour objectif de construire d’une application de chat en
utilisant les sockets en C++ et de réaliser l’objectif de communication entre
plusieurs personnes connectés, soit de choisir de parler avec un personne
précis ou bien de parler avec plusieurs en même temps.
La réalisation du projet a fait appel à l’utilisation d’un Framework
d'applications multiplateforme et d'interface homme machine tel que
‘’QT creator’’ pour mettre en place l’interface de chat et bien
ergonomiques en utilisant le langage C++.
L
3
II. Remerciements
Au terme de ce travail, Nous tenons aussi à témoigner de notre
profonde gratitude à notre professeur C++ : Mr TABII YOUNES qui
n’a épargné ni son temps ni son énergie pour nous aider à faire
aboutir ce travail et pour leur soutien, leur collaboration et leur
disponibilité tout au long du travail.
Merci
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 4
III. Contexte du projet
A. L’objet du projet
Dans un premier temps , ce projet est pour le but de prendre en main
les concepts de la programmation réseau par l’utilisation de
l’interface des sockets. Il permettra, aussi, de mettre en place les
notions de programmation objet avancée. Cette prise en main se fera
par l’intermédiaire d’un projet : création d’une application de chat
client/serveur .
Objectif :
- donner aux utilisateurs la possibilité de choisir un client et de lui
envoyer un message privé qui sera visible que pour lui ou bien de
communiquer avec plusieurs contacts en même temps :
 en créant un serveur de messagerie
 en créant un client répondant au(x) protocole(s) du serveur.
Le serveur doit permettre à plusieurs clients de se connecter au serveur et
de discuter entre eux
5
B. Présentation du projet
 L’environnement client/serveur ?
- L'environnement client/serveur désigne un mode de communication à
travers un réseau entre plusieurs programmes ou logiciels : l'un, qualifié
de client, envoie des requêtes ; l'autre ou les autres, qualifiés
de serveurs, attendent les requêtes des clients et y répondent.
Caractéristiques d'un processus serveur :
 il attend une connexion entrante sur un ou plusieurs ports réseaux ;
 à la connexion d'un client sur le port en écoute, il ouvre un socket local
au système d'exploitation;
 suite à la connexion, le processus serveur communique avec le client
suivant le protocole prévu par la couche application du modèle OSI.
Caractéristiques d'un processus client :
 il établit la connexion au serveur à destination d'un ou plusieurs ports
réseaux ;
 lorsque la connexion est acceptée par le serveur, il communique comme
le prévoit la couche applicative du modèle OSI.
Le client et le serveur doivent bien sûr utiliser le même protocole de
communication au niveau de la couche transport du modèle OSI. Un serveur
est généralement capable de servir plusieurs clients simultanément.
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 6
 Les bibliothèques utilisés ?
On a utilisé plusieurs bibliothèques du Framework QT
la classe QObject
# Include <QObject>
La classe QObject est la classe de base de tous les objets Qt
QObject est au cœur de la Qt Object Model . L'élément central de ce
modèle est un mécanisme très puissant pour la communication sans
faille objet appelé signaux et les slots .
Vous pouvez connecter un signal à un slot avec connexion () et de
détruire la relation avec déconnecter (). Pour éviter les boucles sans
fin de notification, vous pouvez bloquer temporairement des signaux
avec blockSignals (). Le protégé fonctionsconnectNotify ()
et disconnectNotify () permettent de suivre les connexions.
Le module QtNetwork
# Include <QtNetwork>
Le module QtNetwork fournit des classes pour rendre la
programmation réseau simple et portable
7
Pour inclure les définitions des classes du module, utilisez la directive
suivante :
QTcpServer
# Include <QTcpServer>
 C’est une Classe Reference de QtNetwork module.
 La classe QTcpServer fournit un serveur basé sur TCP
QTcpSocket
#include <QTcpSocket>
 C’est une Classe Reference de QtNetwork module.
 La classe QTcpSocket fournit un socket TCP
QWidget
#include <QWidget>
 C’est une classe reference de QtGui module herite de la classe QObjet
 La classe QWidget est la classe de base de tous les objets d'interface
utilisateur
 Le widget est l'atome de l'interface utilisateur: il reçoit les événements de la
souris, du clavier et d'autres du système de fenêtre, et peint une
représentation de lui-même sur l'écran.
QtGui
# Include <QtGui>
Le module QtGui s'étend de QtCore avec fonctionnalité de GUI
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 8
 Les sockets ?
Les sockets sont des flux de données, permettant à des machines locales ou
distantes de communiquer entre elles via des protocoles.
Les différents protocoles sont TCP qui est un protocole dit "connecté", et
UDP qui est un protocole dit "non connecté".
Présentation du protocole TCP
Le protocole TCP est un protocole dit connecté. Il contrôle si le paquet est
arrivé à destination si ce n'est pas le cas il le renvoie.
9
Protocole UDP :
A la différence de TCP, UDP est un protocole en mode non-connecté, il ne
vérifie pas si le paquet est arrivé à destination.
Coté client :
Dans cette partie nous allons nous placer côté client, c'est-à-dire que nous
allons nous connecter à un serveur.
Création d’un socket :
Avant toute chose, il nous faut créer notre socket par la methode
QTcpSocket sockclient
Connexion au serveur :
Maintenant nous allons nous connecter à notre serveur, en remplissant au
préalable la structure contenant les informations du serveur (port et
adresse IP ou nom d'hôte).
On utilise sockclient.about pour effacer tous les connexions et
sockclient.connectToHost pour se connecter à l’hote de n’importe qu’elle
adresse
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 10
Envoi et réception des données
Maintenant pour communiquer avec notre serveur (envoyer et recevoir des
données)
Envoi des données :
On commence par la declaration et initialisation des flux d’envoi par la
classe QByteArray et QDataStream
11
Reception des données
On commence par la declaration des flux entrant et intialisant l’adresse
socket de client
Fermeture de socket :
Et bien entendu on n'oublie pas de fermer notre socket
Voilà, vous savez comment vous connecter, envoyer et recevoir des
données en C avec le protocole TCP.
Maintenant voyons comment cela se passe du côté serveur.
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 12
Coté serveur :
Création du socket
La création du socket reste identique.
Initialisation du serveur
13
Ecoute et connexion des clients
Fermeture de sockets
Et bien entendu on n'oublie pas de fermer notre socket mais aussi ceux de
nos clients.
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 14
IV. Implémentation
Afin d’accomplir ce projet, on a envisagé la création de deux projet c++,
le premier concerne la création d’un serveur, le deuxième se charge de la
création d’une interface client qui aura comme bût l’interface homme
machine.
- En commence avec le premier projet, qui concerne le serveur :
a- Les fonctions Utilisés :
Le projet de serveur est constitué d’une classe serveur qui herite de la
classe public prédéfinie QWidget qui est considerée comme la classe de
base dans la creation des interfaces.
 Dans cette classe on trouve :
 Un constructeur serveur() qui a comme but de construire notre
objet serveur tous en initialisant les attributs, et realisant les
connexions voulu .
 nouveauclient() ;
cette fonction permet de stocker la socket du nouveau client dans
le tableau des clients
 Une procedure void reponse(const QString &message) qui se
charge de répondre au demande des clients (pour bien expliquer
le code est commenté). Pour notre cas cette procedure envoi les
messages envoiyer par les utilisateur, a leur destinataires
 void envoyeratous(const QString &message, const QString
&pseu,QList<QString > Lpseu);
15
cette procedure envoi le paquet des données a tous les utilisateurs
sans exception
 void ajouterclient(QList<QString> lisp);
cette procedur permet d’envoyer la nouvelle liste des utilisateurs
connectés a tous le monde
 void envoyeraclient(QString &des,const QString &message, const
QString &pseu,QList<QString > Lpseu);
cette procedure aura le role d'envoyer le flus a un destinataire
precie et pas a tous les utilisateurs connecter
 clientdeconnecter() ;
cette procedure enleve le client deconnecter de la liste des client
connecter
- Le deuxiéme Projet : client
Le projet de client est constituer d’une classe interclient qui herite
de la classe public QWidget et la classe private Ui de la classe
interface2
 Dans cette classe on trouve plusieurs fonction :
 interclient();
Un constructeur interclient pour construire l’objet client , en
initialisant tous les attributs
 Void on_envoyer_clicked() ;
Une fonction qui permet d’envoyer un message par un click ,
c’est un botton ‘ envoyer ‘
 Void on_connexion_clicked() ;
Une fonction qui permet de se connecter , c’est un botton se
connecter pour la connexion d’un client et de chatter avec les
autres clients
 Void recevoir() ;
Une fonction qui permet d’accueillir des messages recus
 Void connecter() ;
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 16
C’est une fonction pour se connecter à l’application, une fois
quelqu’un se connecte un message s’affiche "vous êtes connecter
!!!"
 Void deconnecter() ;
C’est une fonction pour se déconnecter de chat , et de fermeture
de l’application
 Void on_deconnexion_clicked() ;
Une fonction qui génère la méthode déconnexion par un
Botton , un message s’affiche lorsqu’un client se déconnecte
"vous êtes déconnectez!!!"
 Void envoyerpseud(QString &p) ;
Cette fonction permet d’envoyer un pseudo pour chat utilisateur
 void recevoirpseudo() ;
permet de recevoir les pseudos des contacts connectés
 void on_pushButton_2_clicked() ;
une fonction qui permet de choisir une police , en cliquant sur un
Botton pour la police que tu veut utiliser en chat avec tes contacts
 void on_pushButton_3_clicked() ;
une fonction qui permet de choisir le couleur que tu veut, par
un Botton qui génère une palette des plusieurs couleurs de
l’écriture
 void on_photo_2_clicked() ;
une fonction d’un botton qui permet de parcourir afin de
choisir le fichier que tu veut des images soit .png , .gif ,.jpg ,
.jpe
17
IV. Environnement de développement
La Réalisation de ce projet a fait appel à
l’utilisation d’ un framework d'applications
multiplateforme et d'interface homme machine
(IHM
Qt Creator est un environnement de
développement pour Qt, est un logiciel qui
fournit certaines fonctionnalités nécessaires
aux développeurs d'applications pour
programmer correctement et efficacement.
Avec Qt, on peut écrire des applications une fois et les déployer ensuite sur
de nombreux systèmes d'exploitation de bureau et embarqués sans avoir à
réécrire le code source.
Qt offre aussi toute les fonctionnalités nécessaires pour développer des
applications à interface graphique avancée pour plates-formes de bureau et
embarquées. Qt utilise les interfaces de programmation de graphiques
natives de chaque plate-forme prise en charge, afin de tirer pleinement
parti des ressources du système et pour que les applications possèdent une
apparence et un ressenti natifs.
 Ensemble complet de composants d'interface graphique (widgets), des
boutons et boîtes de dialogue aux arborescences, sans oublier les tables
 Moteur de mise en page sensible à la police de caractères, à la langue et à
l'orientation de l'écran, avec mise à l'échelle automatique
 Prise en charge de l'anticrénelage, de la déformation vectorielle et du
format Scalable Vector Graphics (SVG)
 Personnalisation complète de l'interface utilisateur possible, à l'aide
d'une API de stylisation et de feuilles de style widgets
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 18
 Prise en charge de l'accélération matérielle graphique et de plusieurs
affichages sur les systèmes embarqués
Qt offre la fonctionnalité nécessaire pour une programmation de réseau
aisée et multiplate-forme.
 Abstraction complète du socket de client/serveur
 Prise en charge de HTTP, FTP, DNS et HTTP 1.1 asynchrone
 Accédez à tous les types de données, de HTML et XML aux images et aux
fichiers multimédias
Une gestion basique des projets
Utilisant le système qmake, Qt Creator utilise les fichiers .pro pour
représenter un projet en cours de développement, permettant ainsi de
passer de manière transparente d'un développement avec Qt Creator ou
utilisant des outils plus spécialisés pour développer : dans les deux cas, le
.pro reste le même.
19
V. Réalisation et mise en œuvre
Dans cette section, On va présenter aperçu des écrans de notre application.
Débutant par la premiere etape : la connexion
Pour communiquer avec les contacts , on doit se connecter d’abord
Avant de connecter
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 20
Après connexion
21
Entrain de chatter :
Application de chat avec socket en C++
A.U : 2011/2012
Génie Informatique [C++] Page 22
VI. Conclusion
Durant ce projet, notre mission consistait à créer une application de chat
client /serveur pour qu’un utilisateur peut se connecter et de se
déconnecter avec plusieurs contacts par un serveur en utilisant les sockets
en C++.
Au cours de la période, on a eu l’opportunité de mettre en évidence les
différentes connaissances acquises et d’acquérir de nouveaux concepts
savoir QT . De plus, on a eu l’occasion d’appliquer nos connaissances en
C++, et les principes du système client/serveur en réseau, ainsi que les
principaux rôles des sockets dans une applications client/serveur .
La partie que nous avons développée correspond aux objectifs de départ,
Mais ceci n’empêche pas d’améliorer l’application au futur.

Contenu connexe

Tendances

Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdf
AchrafAntri2
 

Tendances (20)

Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique
 
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
 
Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats Conception et Réalisation d’une Plateforme Web de Gestion des achats
Conception et Réalisation d’une Plateforme Web de Gestion des achats
 
Rapport de stage du fin d'étude
Rapport de stage du fin d'étudeRapport de stage du fin d'étude
Rapport de stage du fin d'étude
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learning
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
 
Présentation du pfa
Présentation du pfaPrésentation du pfa
Présentation du pfa
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Rapport de stage développement informatique
Rapport de stage développement informatique Rapport de stage développement informatique
Rapport de stage développement informatique
 
mémoire de projet de fin d'études
mémoire de projet de fin d'études mémoire de projet de fin d'études
mémoire de projet de fin d'études
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Rapport Sockets en Java
Rapport Sockets en JavaRapport Sockets en Java
Rapport Sockets en Java
 
Speech de PFE de Ahmed Jebali - CM- ISAMM-Encadré par Wafa Bourkhis (Design)...
Speech de PFE de Ahmed Jebali - CM- ISAMM-Encadré par Wafa Bourkhis  (Design)...Speech de PFE de Ahmed Jebali - CM- ISAMM-Encadré par Wafa Bourkhis  (Design)...
Speech de PFE de Ahmed Jebali - CM- ISAMM-Encadré par Wafa Bourkhis (Design)...
 
Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Développement d’une application Web et mobile d’un annuaire médical
Développement d’une application Web et mobile d’un annuaire médicalDéveloppement d’une application Web et mobile d’un annuaire médical
Développement d’une application Web et mobile d’un annuaire médical
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdf
 

En vedette

A project report on chat application
A project report on chat applicationA project report on chat application
A project report on chat application
Kumar Gaurav
 
Wireless sensor network security issues
Wireless sensor network security issuesWireless sensor network security issues
Wireless sensor network security issues
Maha Saad
 

En vedette (20)

Chat application
Chat applicationChat application
Chat application
 
A project report on chat application
A project report on chat applicationA project report on chat application
A project report on chat application
 
Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.
 
02 java-socket
02 java-socket02 java-socket
02 java-socket
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
 
Csss3
Csss3Csss3
Csss3
 
Rapport modélisation web 2.0
Rapport modélisation web 2.0Rapport modélisation web 2.0
Rapport modélisation web 2.0
 
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
Trend of Next-Gen In-Vehicle Network Standard and Current State of Security(F...
 
Braking the Connected Car: The Future of Vehicle Vulnerabilities
Braking the Connected Car: The Future of Vehicle VulnerabilitiesBraking the Connected Car: The Future of Vehicle Vulnerabilities
Braking the Connected Car: The Future of Vehicle Vulnerabilities
 
Exposé traitement d'image
Exposé traitement d'image Exposé traitement d'image
Exposé traitement d'image
 
Hacking your Connected Car: What you need to know NOW
Hacking your Connected Car: What you need to know NOWHacking your Connected Car: What you need to know NOW
Hacking your Connected Car: What you need to know NOW
 
Security in wireless sensor network
Security in wireless sensor networkSecurity in wireless sensor network
Security in wireless sensor network
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
Formation1 sockets
Formation1 socketsFormation1 sockets
Formation1 sockets
 
Internet of Things and Security challenges
Internet of Things and Security challengesInternet of Things and Security challenges
Internet of Things and Security challenges
 
Cyber Security for the Connected Car
Cyber Security for the Connected Car Cyber Security for the Connected Car
Cyber Security for the Connected Car
 
Wireless sensor network security issues
Wireless sensor network security issuesWireless sensor network security issues
Wireless sensor network security issues
 
Connected Car Security
Connected Car SecurityConnected Car Security
Connected Car Security
 
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
 
Vanet ppt
Vanet pptVanet ppt
Vanet ppt
 

Similaire à Rapport application chat

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
Souf212
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
naimanaima1
 

Similaire à Rapport application chat (20)

8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil
 
Advanced html5
Advanced html5Advanced html5
Advanced html5
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
Développement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry PiDéveloppement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry Pi
 
IoT (M2M) - Big Data - Analyses : Simulation et Démonstration
IoT (M2M) - Big Data - Analyses : Simulation et DémonstrationIoT (M2M) - Big Data - Analyses : Simulation et Démonstration
IoT (M2M) - Big Data - Analyses : Simulation et Démonstration
 
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Chap7 java net
Chap7 java netChap7 java net
Chap7 java net
 
Rapport projet final system reparti
Rapport projet final system repartiRapport projet final system reparti
Rapport projet final system reparti
 
Sécurisation des wcf
Sécurisation des wcfSécurisation des wcf
Sécurisation des wcf
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 

Rapport application chat

  • 1. UNIVERSITE ABDELMALEK ESSAADI ECOLE NATIONALE DES SCIENCES APPLIQUEES DE TETOUAN  Réalisé par : Encadré par : Azghiri Walid Mr. Tabii Younes Tbatou Sanae Rapport d’une application de chat client/serveur
  • 2. 1 Sommaire I. Introduction II. Remerciements III. Contexte général du projet A. L’objet du projet B. Présentation du projet IV. Implémentation V. Environnement de développement VI. Réalisation et mise en œuvre VII. Conclusion
  • 3. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 2 I. Introduction e présent rapport décrit la réalisation d’une application de chat client /serveur en utilisant les sockets. Ce dernier est le point de communication par lequel un processus peut émettre ou recevoir des données. Ce projet avait pour objectif de construire d’une application de chat en utilisant les sockets en C++ et de réaliser l’objectif de communication entre plusieurs personnes connectés, soit de choisir de parler avec un personne précis ou bien de parler avec plusieurs en même temps. La réalisation du projet a fait appel à l’utilisation d’un Framework d'applications multiplateforme et d'interface homme machine tel que ‘’QT creator’’ pour mettre en place l’interface de chat et bien ergonomiques en utilisant le langage C++. L
  • 4. 3 II. Remerciements Au terme de ce travail, Nous tenons aussi à témoigner de notre profonde gratitude à notre professeur C++ : Mr TABII YOUNES qui n’a épargné ni son temps ni son énergie pour nous aider à faire aboutir ce travail et pour leur soutien, leur collaboration et leur disponibilité tout au long du travail. Merci
  • 5. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 4 III. Contexte du projet A. L’objet du projet Dans un premier temps , ce projet est pour le but de prendre en main les concepts de la programmation réseau par l’utilisation de l’interface des sockets. Il permettra, aussi, de mettre en place les notions de programmation objet avancée. Cette prise en main se fera par l’intermédiaire d’un projet : création d’une application de chat client/serveur . Objectif : - donner aux utilisateurs la possibilité de choisir un client et de lui envoyer un message privé qui sera visible que pour lui ou bien de communiquer avec plusieurs contacts en même temps :  en créant un serveur de messagerie  en créant un client répondant au(x) protocole(s) du serveur. Le serveur doit permettre à plusieurs clients de se connecter au serveur et de discuter entre eux
  • 6. 5 B. Présentation du projet  L’environnement client/serveur ? - L'environnement client/serveur désigne un mode de communication à travers un réseau entre plusieurs programmes ou logiciels : l'un, qualifié de client, envoie des requêtes ; l'autre ou les autres, qualifiés de serveurs, attendent les requêtes des clients et y répondent. Caractéristiques d'un processus serveur :  il attend une connexion entrante sur un ou plusieurs ports réseaux ;  à la connexion d'un client sur le port en écoute, il ouvre un socket local au système d'exploitation;  suite à la connexion, le processus serveur communique avec le client suivant le protocole prévu par la couche application du modèle OSI. Caractéristiques d'un processus client :  il établit la connexion au serveur à destination d'un ou plusieurs ports réseaux ;  lorsque la connexion est acceptée par le serveur, il communique comme le prévoit la couche applicative du modèle OSI. Le client et le serveur doivent bien sûr utiliser le même protocole de communication au niveau de la couche transport du modèle OSI. Un serveur est généralement capable de servir plusieurs clients simultanément.
  • 7. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 6  Les bibliothèques utilisés ? On a utilisé plusieurs bibliothèques du Framework QT la classe QObject # Include <QObject> La classe QObject est la classe de base de tous les objets Qt QObject est au cœur de la Qt Object Model . L'élément central de ce modèle est un mécanisme très puissant pour la communication sans faille objet appelé signaux et les slots . Vous pouvez connecter un signal à un slot avec connexion () et de détruire la relation avec déconnecter (). Pour éviter les boucles sans fin de notification, vous pouvez bloquer temporairement des signaux avec blockSignals (). Le protégé fonctionsconnectNotify () et disconnectNotify () permettent de suivre les connexions. Le module QtNetwork # Include <QtNetwork> Le module QtNetwork fournit des classes pour rendre la programmation réseau simple et portable
  • 8. 7 Pour inclure les définitions des classes du module, utilisez la directive suivante : QTcpServer # Include <QTcpServer>  C’est une Classe Reference de QtNetwork module.  La classe QTcpServer fournit un serveur basé sur TCP QTcpSocket #include <QTcpSocket>  C’est une Classe Reference de QtNetwork module.  La classe QTcpSocket fournit un socket TCP QWidget #include <QWidget>  C’est une classe reference de QtGui module herite de la classe QObjet  La classe QWidget est la classe de base de tous les objets d'interface utilisateur  Le widget est l'atome de l'interface utilisateur: il reçoit les événements de la souris, du clavier et d'autres du système de fenêtre, et peint une représentation de lui-même sur l'écran. QtGui # Include <QtGui> Le module QtGui s'étend de QtCore avec fonctionnalité de GUI
  • 9. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 8  Les sockets ? Les sockets sont des flux de données, permettant à des machines locales ou distantes de communiquer entre elles via des protocoles. Les différents protocoles sont TCP qui est un protocole dit "connecté", et UDP qui est un protocole dit "non connecté". Présentation du protocole TCP Le protocole TCP est un protocole dit connecté. Il contrôle si le paquet est arrivé à destination si ce n'est pas le cas il le renvoie.
  • 10. 9 Protocole UDP : A la différence de TCP, UDP est un protocole en mode non-connecté, il ne vérifie pas si le paquet est arrivé à destination. Coté client : Dans cette partie nous allons nous placer côté client, c'est-à-dire que nous allons nous connecter à un serveur. Création d’un socket : Avant toute chose, il nous faut créer notre socket par la methode QTcpSocket sockclient Connexion au serveur : Maintenant nous allons nous connecter à notre serveur, en remplissant au préalable la structure contenant les informations du serveur (port et adresse IP ou nom d'hôte). On utilise sockclient.about pour effacer tous les connexions et sockclient.connectToHost pour se connecter à l’hote de n’importe qu’elle adresse
  • 11. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 10 Envoi et réception des données Maintenant pour communiquer avec notre serveur (envoyer et recevoir des données) Envoi des données : On commence par la declaration et initialisation des flux d’envoi par la classe QByteArray et QDataStream
  • 12. 11 Reception des données On commence par la declaration des flux entrant et intialisant l’adresse socket de client Fermeture de socket : Et bien entendu on n'oublie pas de fermer notre socket Voilà, vous savez comment vous connecter, envoyer et recevoir des données en C avec le protocole TCP. Maintenant voyons comment cela se passe du côté serveur.
  • 13. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 12 Coté serveur : Création du socket La création du socket reste identique. Initialisation du serveur
  • 14. 13 Ecoute et connexion des clients Fermeture de sockets Et bien entendu on n'oublie pas de fermer notre socket mais aussi ceux de nos clients.
  • 15. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 14 IV. Implémentation Afin d’accomplir ce projet, on a envisagé la création de deux projet c++, le premier concerne la création d’un serveur, le deuxième se charge de la création d’une interface client qui aura comme bût l’interface homme machine. - En commence avec le premier projet, qui concerne le serveur : a- Les fonctions Utilisés : Le projet de serveur est constitué d’une classe serveur qui herite de la classe public prédéfinie QWidget qui est considerée comme la classe de base dans la creation des interfaces.  Dans cette classe on trouve :  Un constructeur serveur() qui a comme but de construire notre objet serveur tous en initialisant les attributs, et realisant les connexions voulu .  nouveauclient() ; cette fonction permet de stocker la socket du nouveau client dans le tableau des clients  Une procedure void reponse(const QString &message) qui se charge de répondre au demande des clients (pour bien expliquer le code est commenté). Pour notre cas cette procedure envoi les messages envoiyer par les utilisateur, a leur destinataires  void envoyeratous(const QString &message, const QString &pseu,QList<QString > Lpseu);
  • 16. 15 cette procedure envoi le paquet des données a tous les utilisateurs sans exception  void ajouterclient(QList<QString> lisp); cette procedur permet d’envoyer la nouvelle liste des utilisateurs connectés a tous le monde  void envoyeraclient(QString &des,const QString &message, const QString &pseu,QList<QString > Lpseu); cette procedure aura le role d'envoyer le flus a un destinataire precie et pas a tous les utilisateurs connecter  clientdeconnecter() ; cette procedure enleve le client deconnecter de la liste des client connecter - Le deuxiéme Projet : client Le projet de client est constituer d’une classe interclient qui herite de la classe public QWidget et la classe private Ui de la classe interface2  Dans cette classe on trouve plusieurs fonction :  interclient(); Un constructeur interclient pour construire l’objet client , en initialisant tous les attributs  Void on_envoyer_clicked() ; Une fonction qui permet d’envoyer un message par un click , c’est un botton ‘ envoyer ‘  Void on_connexion_clicked() ; Une fonction qui permet de se connecter , c’est un botton se connecter pour la connexion d’un client et de chatter avec les autres clients  Void recevoir() ; Une fonction qui permet d’accueillir des messages recus  Void connecter() ;
  • 17. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 16 C’est une fonction pour se connecter à l’application, une fois quelqu’un se connecte un message s’affiche "vous êtes connecter !!!"  Void deconnecter() ; C’est une fonction pour se déconnecter de chat , et de fermeture de l’application  Void on_deconnexion_clicked() ; Une fonction qui génère la méthode déconnexion par un Botton , un message s’affiche lorsqu’un client se déconnecte "vous êtes déconnectez!!!"  Void envoyerpseud(QString &p) ; Cette fonction permet d’envoyer un pseudo pour chat utilisateur  void recevoirpseudo() ; permet de recevoir les pseudos des contacts connectés  void on_pushButton_2_clicked() ; une fonction qui permet de choisir une police , en cliquant sur un Botton pour la police que tu veut utiliser en chat avec tes contacts  void on_pushButton_3_clicked() ; une fonction qui permet de choisir le couleur que tu veut, par un Botton qui génère une palette des plusieurs couleurs de l’écriture  void on_photo_2_clicked() ; une fonction d’un botton qui permet de parcourir afin de choisir le fichier que tu veut des images soit .png , .gif ,.jpg , .jpe
  • 18. 17 IV. Environnement de développement La Réalisation de ce projet a fait appel à l’utilisation d’ un framework d'applications multiplateforme et d'interface homme machine (IHM Qt Creator est un environnement de développement pour Qt, est un logiciel qui fournit certaines fonctionnalités nécessaires aux développeurs d'applications pour programmer correctement et efficacement. Avec Qt, on peut écrire des applications une fois et les déployer ensuite sur de nombreux systèmes d'exploitation de bureau et embarqués sans avoir à réécrire le code source. Qt offre aussi toute les fonctionnalités nécessaires pour développer des applications à interface graphique avancée pour plates-formes de bureau et embarquées. Qt utilise les interfaces de programmation de graphiques natives de chaque plate-forme prise en charge, afin de tirer pleinement parti des ressources du système et pour que les applications possèdent une apparence et un ressenti natifs.  Ensemble complet de composants d'interface graphique (widgets), des boutons et boîtes de dialogue aux arborescences, sans oublier les tables  Moteur de mise en page sensible à la police de caractères, à la langue et à l'orientation de l'écran, avec mise à l'échelle automatique  Prise en charge de l'anticrénelage, de la déformation vectorielle et du format Scalable Vector Graphics (SVG)  Personnalisation complète de l'interface utilisateur possible, à l'aide d'une API de stylisation et de feuilles de style widgets
  • 19. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 18  Prise en charge de l'accélération matérielle graphique et de plusieurs affichages sur les systèmes embarqués Qt offre la fonctionnalité nécessaire pour une programmation de réseau aisée et multiplate-forme.  Abstraction complète du socket de client/serveur  Prise en charge de HTTP, FTP, DNS et HTTP 1.1 asynchrone  Accédez à tous les types de données, de HTML et XML aux images et aux fichiers multimédias Une gestion basique des projets Utilisant le système qmake, Qt Creator utilise les fichiers .pro pour représenter un projet en cours de développement, permettant ainsi de passer de manière transparente d'un développement avec Qt Creator ou utilisant des outils plus spécialisés pour développer : dans les deux cas, le .pro reste le même.
  • 20. 19 V. Réalisation et mise en œuvre Dans cette section, On va présenter aperçu des écrans de notre application. Débutant par la premiere etape : la connexion Pour communiquer avec les contacts , on doit se connecter d’abord Avant de connecter
  • 21. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 20 Après connexion
  • 23. Application de chat avec socket en C++ A.U : 2011/2012 Génie Informatique [C++] Page 22 VI. Conclusion Durant ce projet, notre mission consistait à créer une application de chat client /serveur pour qu’un utilisateur peut se connecter et de se déconnecter avec plusieurs contacts par un serveur en utilisant les sockets en C++. Au cours de la période, on a eu l’opportunité de mettre en évidence les différentes connaissances acquises et d’acquérir de nouveaux concepts savoir QT . De plus, on a eu l’occasion d’appliquer nos connaissances en C++, et les principes du système client/serveur en réseau, ainsi que les principaux rôles des sockets dans une applications client/serveur . La partie que nous avons développée correspond aux objectifs de départ, Mais ceci n’empêche pas d’améliorer l’application au futur.