Cours:QtTCP : Différence entre versions
m (→Mise en place du serveur) |
(→Partie Client) |
||
Ligne 68 : | Ligne 68 : | ||
on ajoute un attribut nommé {{Rouge|client}} de type QTcpSocket à notre application, donc dans le fichier MainWindow.h, et on passe les paramètres au constructeur de la classe QTcpSocket dans le fichier MainWindow.cpp | on ajoute un attribut nommé {{Rouge|client}} de type QTcpSocket à notre application, donc dans le fichier MainWindow.h, et on passe les paramètres au constructeur de la classe QTcpSocket dans le fichier MainWindow.cpp | ||
+ | |||
+ | |||
+ | <source lang=cpp> | ||
+ | // mainwindow.h | ||
+ | ... | ||
+ | #include <QTcpSocket> | ||
+ | ... | ||
+ | private : | ||
+ | QTcpSocket client; | ||
+ | ... | ||
+ | |||
+ | |||
+ | //mainwindow.cpp | ||
+ | ... | ||
+ | |||
+ | MainWindow::MainWindow(QWidget *parent) | ||
+ | :QMainWindow(parent), | ||
+ | ui(new Ui::MainWindow), | ||
+ | client(this) | ||
+ | { | ||
+ | ui->setupUi(this); | ||
+ | } | ||
+ | ... | ||
+ | </source> |
Version du 26 novembre 2019 à 12:36
Sommaire
Configuration du projet
Attention, il est nécessaire de rajouter les librairies pour faire du réseau dans le projet :
// ajouter dans le fichier .pro
QT += network
Partie Serveur
Une carte raspberryPi sera utilisée comme serveur.
Vous aurez besoin de l'adresse (notée @ par la suite) ip de votre carte, pour ce faire vous pouvez dans une console lancer la commande :
ping ras-pi-xx
Mise en place du serveur
On ajoute un attribut nommé serveur de type QTcpServer à notre application, donc dans le fichier MainWindow.h, et on passe les paramètres au constructeur de la classe QTcpServer dans le fichier MainWindow.cpp
// mainwindow.h
...
#include <QTcpServer>
...
private :
QTcpServer serveur;
...
//mainwindow.cpp
...
MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent),
ui(new Ui::MainWindow),
serveur(this)
{
ui->setupUi(this);
}
...
En utilisant la méthode listen, dont voici un exemple d'utilisation, faîtes écouter votre serveur sur l'@ ip de votre carte sur le port de votre choix (>1000).
monServeur.listen(QHostAddress("192.168.0.1"),monNumeroDePort);
afficher un message indiquant la réussite ou l'échec du démarrage du serveur.
connexion d'un client
Lorsqu'un client se connecte sur votre serveur, celui-ci émet un signal newConnection.
Connectez vous sur ce signal pour afficher un message d'information à chaque nouvelle connexion
Améliorations
Choix du port
Lancer 2 instances de votre programme et constater qu'il n'y en a qu'un seul qui peut créer une connexion
Partie Client
Mise en place du client
on ajoute un attribut nommé client de type QTcpSocket à notre application, donc dans le fichier MainWindow.h, et on passe les paramètres au constructeur de la classe QTcpSocket dans le fichier MainWindow.cpp
// mainwindow.h
...
#include <QTcpSocket>
...
private :
QTcpSocket client;
...
//mainwindow.cpp
...
MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent),
ui(new Ui::MainWindow),
client(this)
{
ui->setupUi(this);
}
...