[C++] QT Socket

Voir le sujet précédent Voir le sujet suivant Aller en bas

[C++] QT Socket

Message  Florent le Jeu 26 Déc 2013, 17:23

Bonjour,

J'ai un soucis pour envoyer un fichier via qt, j'aimerais envoyer le nom du fichier et ensuite le contenu du fichier mais j'ai une erreur lors de la réception du fichier,

La méthode d'envoi:

Code:

QString nomFichier = "d:\\drop\\fichier.mp3";
    QFile file(nomFichier);
    if(!file.open(QIODevice::ReadOnly))
    {
        qDebug() << "Error, file can't be opened successfully !";
        return;

    }

    QByteArray paquet ;
    QDataStream out(&paquet, QIODevice::WriteOnly) ;
    out << quint16(0) << nomFichier << file.readAll() ;
    out.device()->seek(0) ;
    out << quint16(paquet.size() - sizeof(quint16)) ;
    socket->write(paquet) ;

    ui->textEdit->append("Envoi du fichier en cours");

Et pour la réception sur le serveur:

Code:

QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender()) ;
    if(socket == 0)
        return ;

    QDataStream in(socket) ;
    QString filename ;
    QFile file ;
    QByteArray byteArray ;

    forever {
        if (tailleMessage == 0){
            if(socket->bytesAvailable() < (int)sizeof(quint16))
                break ;
            //on recupere taille fichier
            in >> tailleMessage ;
            //on envoi au client la taille du fichier
            std::ostringstream taille;
            taille << tailleMessage;
            QString tailleString = QString::fromStdString(taille.str());
            this->envoyer("reception fichier de taille "+tailleString, socket);

            // on recupere nom fichier et on l'ouvre
            in >> filename ;
            file.setFileName(filename+".copie") ;
            if(!(file.open(QIODevice::Append)))
            {
                qDebug("File cannot be opened.");
                exit(0);
            }
        }
        if (socket->bytesAvailable() < tailleMessage)
        {
            cout << "Going to break" << endl;
            break;
        }

        in >> byteArray ;
        file.write(byteArray) ;

il récupère bien la nom du fichier et le créé mais n'écrit rien dans le fichier,

Merci de votre aide

Florent

Nombre de messages : 93
Prénom : Florent
Date d'inscription : 02/02/2010

Revenir en haut Aller en bas

Re: [C++] QT Socket

Message  mvh le Jeu 26 Déc 2013, 23:03

merci pour ta question Florent ...
... Mr NFS y répondra ASAP ...  cheers 


_________________

La fête c'est nul sans Kidibul !
... (vieux proverbe local)



mvh

Nombre de messages : 5973
Age : 104
Prénom : Marcel VANHAELEN
Statut : (fin de bail)
Win 3.1 à reprendre
Localisation : Koekeliek de Baselberg
Date d'inscription : 06/12/2006

Revenir en haut Aller en bas

Re: [C++] QT Socket

Message  nvs le Ven 27 Déc 2013, 13:01

ah non. comptez pas sur moi pour ce coup.






 Suspect 

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [C++] QT Socket

Message  mvh le Ven 27 Déc 2013, 13:25

voilà qui est répondu ... et sans tarder qui plus est ...  cheers 

_________________

La fête c'est nul sans Kidibul !
... (vieux proverbe local)



mvh

Nombre de messages : 5973
Age : 104
Prénom : Marcel VANHAELEN
Statut : (fin de bail)
Win 3.1 à reprendre
Localisation : Koekeliek de Baselberg
Date d'inscription : 06/12/2006

Revenir en haut Aller en bas

Re: [C++] QT Socket

Message  Contenu sponsorisé Aujourd'hui à 10:52


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum