Okay. Here is the code for the NetworkModule.
#include "NetworkModule.h"
NetworkModule::NetworkModule()
{
/* flag permettant de savoir quel message on reçoit */
flag = 0;
stateReady = 0;
socket = new QTcpSocket(this);
socket->connectToHost("127.0.0.1", 64001);
/* Les slots */
connect(socket, SIGNAL(connected()), this, SLOT(connecte()));
connect(socket, SIGNAL(disconnected()), this, SLOT(deconnecte()));
}
void NetworkModule::connecte()
{
/* bouton connexion becomes green in the QML view */
connect(socket, SIGNAL(readyRead()), this, SLOT(donneesRecues()));
}
void NetworkModule::deconnecte()
{
/* bouton connexion becomes grey in the QML view */
cout<<"Deconnecte au system"<<endl;
}
void NetworkModule::donneesRecues()
{
/* flag == 0 pour la reception du nom */
if(flag == 0)
{
//cout<<"flag : "<<flag<<endl;
socket->read(name_Cache, sizeof(name_Cache));
//cout<<"name_Cache : "<<name_Cache<<endl;
nom = (QString)name_Cache;
//cout<<"name_Cache : "<<nom.toStdString()<<endl;
flag = 1;
}
/* flag == 1 dans le cadre de la reception de la taille */
else if(flag == 1)
{
//cout<<"flag : "<<flag<<endl;
socket->read(size_CacheC, sizeof(size_CacheC));
size_Cache = atoi(size_CacheC);
//cout<<"size_Cache : "<<size_Cache<<" octets"<<endl;
flag = 2;
}
/* flag == 2 dans le cadre de la reception d'un fichier */
else if(flag == 2)
{
/* Here we download the file */
QFile file(nom);
if(!(file.open(QIODevice::ReadWrite)))
{
exit(0);
}
QByteArray read = socket->read(socket->bytesAvailable());
//cout<<read.size()<<endl;
if(read.size() == (int)size_Cache)
{
cout<<"The file was received"<<endl;
flag = 0;
stateReady = 1;
socket->close();
}
file.write(read);
file.close();
}
return;
}
int NetworkModule::getStateReady()
{
return stateReady;
}
↧