我尝试使用Qt Network发送许多文件但是有问题。 我的客户端工作正常5个文件,但我的服务器没有收到所有文件。 我的服务器接收2个文件,然后,如果我发送新文件,则等待的第三个文件到达服务器...
以下是我接收文件的代码:
void Serveur::fichier_recu() {
/* Permet de connaître la socket du client qui envoie le fichier */
QTcpSocket *socket_client = qobject_cast<QTcpSocket *>(sender());
if(socket_client == 0) {
return;
}
QDataStream in(socket_client);
/* Si taille_message est vide, on regarde si on recois des données */
if(taille_message == 0) {
/* si les données sont < qu'un quint32 on quitte et attend jusqu'à ce qu'elles soit égales à un quint32 */
if(socket_client->bytesAvailable() < sizeof(quint32)) {
return;
}
in >> taille_message;
}
if(socket_client->bytesAvailable() < taille_message) {
//Tout n'est pas encore arrivé
return;
}
cout << "<Sytem> Reception d'un fichier." << endl;
QByteArray donnees;
QString nom_fichier;
in >> nom_fichier >> donnees;
QFile fichier("sauvegarde/" + nom_fichier);
fichier.open(QIODevice::WriteOnly);
fichier.write(donnees);
fichier.close();
taille_message = 0;
cout << "<System> Reception du fichier effectuee." << endl;
}