Soyez le premier à donner votre avis sur cette source.
Vue 11 317 fois - Téléchargée 1 759 fois
// un petit extrait de la thread de téléchargement if (strcmp(uc.lpszScheme,"http")==0) { //Ouverture de la requête HTTP DistantFile=HttpOpenRequest(hProtoSession,"GET",uc.lpszUrlPath,NULL,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION, 0 ); SetWindowText(GetDlgItem(Hwnd,ID_STATE),"Envoi de la requête..."); //Prise en charge de la reprise char RangeBytes[256]; wsprintf(RangeBytes,"Range: bytes=%d-\r\n",sizelocal); // Exemple Ranges: bytes=0- obtient tout le fichier, Range: bytes=2564- démarre le téléchargement à partir de l'octet 2565 /!\ du fichier et jusqu'à la fin HttpAddRequestHeaders(DistantFile,RangeBytes,-1L,HTTP_ADDREQ_FLAG_ADD_IF_NEW); SetDlgItemText(Hwnd,ID_STATE,"Initialisation du téléchargement..."); //Envoi réel de la requête HttpSendRequest(DistantFile,NULL,NULL,NULL,0); bool info=HttpQueryInfo(DistantFile,HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_CONTENT_LENGTH,NULL,&sizehighdistant,0); //Détermination de la taille du fichier distant SetDlgItemText(Hwnd,ID_STATE,"Demande d'information sur le fichier..."); info=HttpQueryInfo(DistantFile,HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_CONTENT_LENGTH,&sizedistant,&sizehighdistant,0); if (!info) { MessageBox(0,"Impossible d'obtenir des informations sur le fichier","Téléchargeur v2.0",MB_OK|MB_ICONSTOP); ResetValues(Hwnd); return 0; } sizedistant+=sizelocal; } else if (strcmp(uc.lpszScheme,"ftp")==0) { //Ouverture du fichier FTP SetWindowText(GetDlgItem(Hwnd,ID_STATE),"Ouverture du fichier..."); DistantFile=FtpOpenFile(hProtoSession,uc.lpszUrlPath,GENERIC_READ,FTP_TRANSFER_TYPE_BINARY,INTERNET_FLAG_RELOAD); //Prise en charge de la reprise SetWindowText(GetDlgItem(Hwnd,ID_STATE),"Initialisation du téléchargement..."); sizedistant=FtpGetFileSize(DistantFile,&sizehighdistant); InternetCloseHandle(DistantFile); char Rest[256]; wsprintf(Rest,"REST %d",sizelocal); bool commandrest=FtpCommand(hProtoSession,false,FTP_TRANSFER_TYPE_BINARY,Rest,NULL,NULL); if (!commandrest) { MessageBox(Hwnd,"Erreur lors de l'envoi de la commande REST au serveur ftp!","Erreur",MB_OK|MB_ICONSTOP); ResetValues(Hwnd); return 0; } char Retr[256]; wsprintf(Retr,"RETR %s",uc.lpszUrlPath); bool commandretr=FtpCommand(hProtoSession,true,FTP_TRANSFER_TYPE_BINARY,Retr,NULL,&DistantFile); if (!commandretr) { MessageBox(Hwnd,"Erreur lors de l'envoi de la commande RETR au serveur ftp!","Erreur",MB_OK|MB_ICONSTOP); ResetValues(Hwnd); return 0; } } else { MessageBox(Hwnd,"Le type de transfert que vous demandez n'est pas pris en charge! Désolé!","Information",MB_ICONASTERISK); ResetValues(Hwnd); return 0; } // pour le reste cf zip
19 janv. 2005 à 22:25
19 janv. 2005 à 01:24
Kirua> oui euh en fait la vitesse calculée à partir de la dernière seconde écoulée (ou des dernières secondes si la boucle s'est effectuée en plus de 1 seconde notamment pour les débits inférieurs à 4Ko/s, vu que j'ai pris un tampon de 4 Ko)
18 janv. 2005 à 23:01
18 janv. 2005 à 19:35
18 janv. 2005 à 11:57
Je suis dessus depuis septembre (j'ai pas trop le temps de programmer avec les études)
Par contre ça bugge pour les fichiers inférieurs à 2 Ko (ça télécharge bien le fichier mais à la fin le fameuse boîte de dialogie "ce programme a rencontré un problème et doit fermer..." apparaît), enfin c'est pas grave le but c'est de télécharger des gros fichiers :)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.