Bonjour,
Depuis quelque jours, je me suis mis à programmer avec Qt et j'arrive à la partie concernant l'utilisation de QTcpSocket et QTcpServer. En utilisant les exemples trouvés sur la toile j'arrive à personnaliser certain programme basic.
Cependant beaucoup de chose m’échappe comme dans l'exemple que je vous soumet. Ma démarche est de comprendre pas à pas comment trouver un serveur , afficher l’état de la connexion à chaque étape. En un 2° temps communiquer
avec le serveur (Le serveur et le client sont le même poste de travail Windows 10 64 bits).
Voici mes fichiers :
1- Fichier header : MainWindow.h
2- Fichier constructeur : MainWindow.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
25
26
27
28
29
30
31 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QPushButton> #include <QMainWindow> #include <QTcpSocket> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); public slots: void onReadyRead(); void RechercheServeur(); private: Ui::MainWindow *ui; QTcpSocket SocketClient; QPushButton *BtnQuitter; }; #endif // MAINWINDOW_H
3- Fichier Main : Main.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #include "MainWindow.h" #include "ui_mainwindow.h" #include <QDebug> #include <QHostAddress> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), SocketClient(this) { ui->setupUi(this); BtnQuitter = new QPushButton; QObject::connect(ui->BtnQuitter,SIGNAL(clicked()),this, SLOT(quit)); QString IPServeur; IPServeur = ui->TxtServeurIP->text(); int IPPort = ui->SpinPort->value(); // SocketClient.connectToHost("127.0.0.1", IPPort); SocketClient.connectToHost(IPServeur, IPPort); QObject::connect(ui->BtnConnecte,SIGNAL(clicked()),this, SLOT(RechercheServeur())); //connect(&_socket, SIGNAL(readyRead()), this, SLOT(onReadyRead())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::RechercheServeur() { ui->textEdit->append("1-Recherche connection au serveur...."); if (SocketClient.ConnectedState == 3) // Etat connecté du socket { ui->textEdit->append("2- Connection Réussie au seveur : " + SocketClient.peerAddress().toString()); return; } else { ui->textEdit->append("3-Connection terminée....."); } } void MainWindow::OnReadyRead() { }
Quelque soit la configuration (Existence ou pas d'adresse IP, de port, .. même reponse ' connexion réussie')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 include "MainWindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
Je peux récupérer le nom, l'adresse, le port de connexion que si je code l'adresse IP en dur, sion vide
Je voudrais comprendre ce qui cloche dans mon code.
Merci pour votre aide.
Bonne journée.
A.MAHALLA
Partager