Salut les amis!
Je suis confronté à un problème de communication en réseau. J'ai bien crée un serveur et un client. Jusque là tout va bien. Mon idée est d'afficher chez chaque client la liste des autres clients connectés. Lorsque je clique sur le bouton connexion, le pseudo du client doit apparaitre chez tous les autres. J'ai choisi de le faire sur une QTextEdit(m_vueClients). En plus, j'ai une autre QTextEdit(m_zoneMessage) pour les messages, qui vont s'afficher lorsque le client cliquera sur le bouton envoyer. Mon problème est que lorsqu eje clique sur le bouton connexion, le message apparait plutot sur le QtextEdit du message et non sur celui des pseudos.
Quelqu'un aurait-il une idée?
Merci d'avance
Voici mon bout de code:
Slot pour les messages recus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "FenClient.h" FenClient::FenClient() { connect(m_socket, SIGNAL(readyRead()), this, SLOT(pourMessageRecues())); connect(m_boutonConnection, SIGNAL(clicked()), this, SLOT(envoyerPseudo())); connect(m_socket, SIGNAL(connected()), this, SLOT(connection())); }
Slot pour l'envoie du pseudo
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 void FenClient::messageRecues() { QString messageRecu; QDataStream in(m_socket); if(tailleMessage == 0) { if(m_socket->bytesAvailable() < (int)sizeof(quint16)) { return; } in>>tailleMessage; } if(m_socket->bytesAvailable() < tailleMessage) { return; } in >> messageRecu; if(boutonConnexion->isEnabled) { m_vueClients->append(messageRecu); } else if(boutonEnvoyer->isEnabled) { m_zoneMessage->append(messageRecu); } tailleMessage = 0; }
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 void FenClient::envoyerPseudo() { QByteArray paquet1; QString pseudoAEnvoyer; QDataStream out(&paquet1, QIODevice::WriteOnly); pseudoAEnvoyer += tr("<strong>") + m_textPseudo->text() + tr("<strong>"); out<< (quint16) 0; out<< pseudoAEnvoyer; out.device()->seek(0); out<< (quint16)(paquet1.size()-sizeof(quint16)); m_socket->write(paquet1); }
Partager