2010-04-19 20 views
11

Actualmente estoy trabajando en una aplicación que envía y recibe archivos desde el servidor remoto. Para hacer una operación de red, estoy usando QNetworkAccessManager.Tiempo de espera de QNetworkAccessManager

Para cargar un archivo Estoy usando QNetworkAccessManager :: put() y para descargar Estoy usando las funciones de QNetworkAccessManager :: get().

Al cargar un archivo inicializaré un temporizador con un tiempo de 15 segundos. si subo un archivo pequeño, lo completará dentro del período de tiempo de espera. Pero si intento subir un archivo de gran tamaño, aguarde el tiempo de espera. Entonces, cómo decidir el tiempo de espera para cargar un archivo grande.

Igual en caso de descarga de un archivo grande. Obtengo archivo en partes por fragmento en la señal de readyread(). Aquí también, si descargo un archivo grande, obtengo un tiempo de espera. Entonces, ¿cómo decidir el tiempo de espera para cargar archivos de gran tamaño?

Respuesta

17

Utilice la señal QNetworkReply::uploadProgress() (o downloadProgress) para avisarle de que la operación está progresando. Luego, configure un temporizador durante 15 segundos después de la última notificación uploadProgress/downloadProgress (con el temporizador iniciado cuando comenzó la descarga/carga). Si la descarga se detiene, puede cancelar la operación 15 segundos después de la última actualización.

+0

Cómo cancelar la operación de descarga y hacer que QNetworkReply emita httpFinished()? – Temak

+1

@Temak use 'reply-> abort()' y 'emitir respuesta-> finished()' – vladon

+1

Esto debería ser implementado por el framework IMO ... – Kolyunya