Asynchrones Versenden einer Datei

Alles rund um die Programmierung mit Qt
Antworten
jw202
Beiträge: 36
Registriert: 6. August 2012 22:25

Asynchrones Versenden einer Datei

Beitrag von jw202 »

Hallo,

ich habe eine Frage. Ich möchte ein Programm zu versenden von Dateien schreiben. Das Empfangen ist kein Problem. Ein QTcpServer, der mit dem Signal ReadyRead() verbunden ist und schreibt, sobald neue Daten ankommen. Das Problem ist allerdings das Versenden. Dieses läuft nach dem Prinzip ab:

Code: Alles auswählen

while(1)
{
            int totalWritten = 0;
            file->open(QIODevice::ReadOnly);
            QByteArray read;
            while(1)
            {
                read.clear();
                read = file->read(16384*8);
                if(read.size()==0)
                    break;

                totalWritten += sendSocket->write(read);
                sendSocket->waitForBytesWritten();
                read.clear();
                sendSocket->flush();
            }
            file->close();
}
Das Problem hierbei ist, dass diese While-Schleife bei großen Dateien sehr lange läuft und währendessen der GUI nicht reagiert. Gibt es einen asynchronen Weg um Dateien zu versenden?

EDITED: ich möchte so gut wie es geht auf Threads verzichten. Ich denke bei der Lösung an so etwas ähnliches wie QFtp. 'Gibt es da etwas?
trendyAndy
Beiträge: 54
Registriert: 27. März 2009 15:01

Re: Asynchrones Versenden einer Datei

Beitrag von trendyAndy »

Servus!

Im Forum gibts einen Thread der heißt QFTP. Da steht einiges drin...
http://www.qtforum.de/forum/viewtopic.p ... 031#p65402

Gruß
jw202
Beiträge: 36
Registriert: 6. August 2012 22:25

Re: Asynchrones Versenden einer Datei

Beitrag von jw202 »

Hallo


QFTP war mein erster Gedanke, allerdings wird ein eigenes Protokoll verwendet und nicht FTP. Es geht mir primär darum, dass ich die while-Schleife zum Senden irgendwie durch ein asynchrones Konstrukt ersetzen könnte, da während der while-Schleife der GUI streikt. QFTP würde das Problem lösen, wenn die andere Seite FTP verwenden würde. Aber dann bräuchte ich auf der anderen Seite einen FTP-Server.

LG
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: Asynchrones Versenden einer Datei

Beitrag von dazedly »

Wirf die Schleife in einen Thread und das Versenden ist asynch.
Antworten