Bonjour !
Cela fait de nombreuses semaines que je galère sur un problème, je dispose qu'une application Qt qui fait office de client de chat, ainsi que d'un serveur de sockets codé en PHP (fonctions socket_*). Le problème c'est que les deux font la gueule on va dire !
Tout d'abord, quand le client Qt envoie une requête, par exemple :
PHP reçois :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CONNECT Bilbax test
Je suppose que les six premiers caractères sont la taille du message (le quint16) et que le dernier caractère est le caractère NULL indiquant la fin de la chaîne). Après quelque parsages en PHP j'arrive à restituer le message envoyé par le client. Pour l'instant pas de problèmes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ����CONNECT Bilbax test�
Par contre. Quand il est question que PHP renvoie une réponse au client, ça marche pas du tout. Au moment du socket_write() de PHP le signal « readyRead » de la socket cliente est émis. Selon bytesAvailable() les données ont été reçues, sauf que la réponse sous forme de QString est vide !
Voici le slot qui est connecté au signal readyRead :
J'ai énormément besoin de votre aide !
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 void WinConn::datasReceived() { QDataStream in(_socket); QMessageBox::information(this, "Réception", "Des données ont été reçues. Taille disponible : "+QString::number(_socket->bytesAvailable())+" ; Taille d'une quint16 : "+QString::number((int)sizeof(quint16))); if(_msgSize == 0) { if(_socket->bytesAvailable() < (int)sizeof(quint16)) return; in >> _msgSize; } QString recep; in >> recep; QMessageBox::information(this, "Réception", recep); _msgSize = 0; }
Ça serait très gentil de m'aider !
Merci d'avance.
Partager