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
|
/*Même principe que lorsque le serveur reçoit un paquet:
On essaie de récupérer la taille du Message
Une fois qu'on l'a, on attend d'avoir reçu le message entier (en se basant sur la taille annooncée tailleMessage)
*/
QDataStream in(socket);
if (tailleMessage==0)//Si on ne connaît pas encore la taille du message, on essaie de la récupérer
{
if (socket->bytesAvailable()<(int)sizeof(quint16))//On n'a pas reçu la taille du message en entier
return;
in>>tailleMessage;//Si on a reçu la taille du message en entier, on la récupère
}
//Si on connaît la taille du message, on vérifie si on a reçu le message en entier
if (socket->bytesAvailable()<tailleMessage)//Si on n'a pas encore tout reçu, on arrête la méthode
return;
//Si on arrive jusqu'à cette ligne, on peut récupérer le message entier
QString messageRecu;
in>>messageRecu;
QPixmap pixmap("puzzle.png");
QImage image(pixmap.toImage());
//On affiche le message sur la zone de Chat
QTextCursor textCursor=textEditListeMessages->textCursor();
textEditListeMessages->append("");//Pour le saut de ligne
textCursor.insertImage(image);//Colle l'avatar approprié
textCursor.insertHtml(messageRecu);
//On remet la taille du message à 0 pour pouvoir recevoir de futurs messages
tailleMessage=0; |
Partager