Bonjour,
Je suis un débutant en c++. J'aimerais un jour arriver à programmer des logiciels. Maintenant, je suis en train de faire mon premier chat. Cela veut dire que je dois travailler à partir du réseau. Mais, mon programme n'arrive pas à recevoir des données. Quelqu'un peut-il m'aider?
Code pour recevoir des données :
Code pour envoyer des données :Code:void FenClient::donneesRecues() { qint8 tailleMsg(0); QDataStream in(socket); if(socket->tailleMessage()==0) { if(socket->bytesAvailable()<(int)sizeof(quint16)) { QMessageBox::information(this,"Test du programme","byte valide pour le client dans le serveur : "+QString::number(socket->bytesAvailable())); QMessageBox::information(this,"Test du programme","quint16 dans le serveur : "+QString::number(sizeof(quint16))); return; } in >> tailleMsg; socket->setTailleMessage(tailleMsg); } if(socket->bytesAvailable() < socket->tailleMessage()) { QMessageBox::information(this,"Test du programme","taille du message du client dans le serveur : "+QString::number(socket->tailleMessage())); return; } QString messageRecu; in >> messageRecu; chatbox->append(messageRecu); socket->setTailleMessage(0); tailleMsg = 0; }
Code:void FenClient::on_boutonEnvoyer_clicked() { QByteArray paquet; QDataStream out(&paquet,QIODevice::WriteOnly); QString messageAEnvoyer; QString msgAEnvoyerEfface; if(message->font().bold()) { messageAEnvoyer += "<b>"; } if(message->font().italic()) { messageAEnvoyer += "<i>"; } messageAEnvoyer += "<font color='"+couleur.name()+"'><img src='"+socket->avatar()+tr("' width='25' height='25' border='1'> <b>")+pseudo->text()+tr("</b> : ")+message->text()+"</font>"; int boucle(0); while(boucle<messageAEnvoyer.size()) { if(messageAEnvoyer[boucle]==':'&&messageAEnvoyer[boucle+1]==')') { for(int i(boucle+2);i<messageAEnvoyer.size();i++) { msgAEnvoyerEfface += messageAEnvoyer[i]; } messageAEnvoyer.replace(boucle,boucle+1,"<img src='"+QCoreApplication::applicationDirPath()+"/smile_a.png' width='15' height='15'>"); messageAEnvoyer += msgAEnvoyerEfface; msgAEnvoyerEfface.clear(); } boucle++; } boucle = 0; while(boucle<messageAEnvoyer.size()) { if(messageAEnvoyer[boucle]==':'&&messageAEnvoyer[boucle+1]=='(') { for(int i(boucle+2);i<messageAEnvoyer.size();i++) { msgAEnvoyerEfface += messageAEnvoyer[i]; } messageAEnvoyer.replace(boucle,boucle+1,"<img src='"+QCoreApplication::applicationDirPath()+"/smile_b.png' width='15' height='15'>"); messageAEnvoyer += msgAEnvoyerEfface; msgAEnvoyerEfface.clear(); } boucle++; } boucle = 0; while(boucle<messageAEnvoyer.size()) { if(messageAEnvoyer[boucle]==':'&&messageAEnvoyer[boucle+1]=='D') { for(int i(boucle+2);i<messageAEnvoyer.size();i++) { msgAEnvoyerEfface += messageAEnvoyer[i]; } messageAEnvoyer.replace(boucle,boucle+1,"<img src='"+QCoreApplication::applicationDirPath()+"/smile_c.png' width='15' height='15'>"); messageAEnvoyer += msgAEnvoyerEfface; msgAEnvoyerEfface.clear(); } boucle++; } boucle = 0; if(message->font().bold()) { messageAEnvoyer += "</b>"; } if(message->font().italic()) { messageAEnvoyer += "</i>"; } out << (quint16) 0; out << messageAEnvoyer; out.device()->seek(0); out << (quint16) (paquet.size() - sizeof(quint16)); socket->write(paquet); message->clear(); message->setFocus(); message->setFont(QFont(message->font().family(),message->font().pointSize(),QFont::Normal)); couleur.setNamedColor("#000000"); QPalette palette; palette.setColor(QPalette::Text,couleur); message->setPalette(palette); }
-----