Bonjour,

je souhaite réaliser un serveur (QTcpServer) qui écoute un port donnée. Lorsque qu'un client envoi une chaine de caractère, le serveur doit l'afficher dans une popup.

Mon main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#include "ServeurTCP.h"
#include <QApplication>
 
int main(int argc, char** argv) {
    QApplication app(argc, argv);
    ServeurTCP server;
    return app.exec();
}

ServeurTCP.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ServeurTCP : public QObject {
    Q_OBJECT
    private:
        QTcpServer server;
        QTcpSocket* client;
        void showMessage(QString message);
    public:
        ServeurTCP(QObject * parent = 0);
        ~ServeurTCP();
 
    public slots:
        void acceptConnection();
        void startRead();
};
ServeurTCP.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ServeurTCP::ServeurTCP(QObject* parent): QObject(parent) {
    connect(&server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));
    server.listen(QHostAddress::Any, 8888);
}
 
ServeurTCP::~ServeurTCP() {
    server.close();
}
 
void ServeurTCP::acceptConnection() {
    client = server.nextPendingConnection();
    connect(client, SIGNAL(readyRead()), this, SLOT(startRead()));
}
 
void ServeurTCP::startRead() {
    char buffer[1024] = {0};
    client->read(buffer, client->bytesAvailable());
 
    showMessage(QString(buffer));
}
 
void ServeurTCP::showMessage(QString message) {
    QMessageBox::warning(NULL, "Titre", message, QMessageBox::Ok);
}

Ma première question, pourquoi le programme s'arrête lorsque je quitte ma QMessageBox ? (Car il s'agit de la seule et unique fenêtre ?)

Merci.