Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

YOYODOWN - TÉLÉCHARGEMENT HTTP [DEV-C++ 4.9.9.2]


Information sur la source

Catégorie :Réseaux & Internet Classé sous : yoyodown, télécharger, téléchargement, http, devc Niveau : Débutant Date de création : 17/02/2007 Date de mise à jour : 25/02/2007 14:16:22 Vu / téléchargé: 4 686 / 774

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (42)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Comme le titre l'indique, ce petit programme est un téléchargeur HTTP.
Vous rentrez l'URL complète du fichier à télécharger et vous précisez le dossier où il sera sauvegardé. Plus qu'à cliquer sur 'Télécharger' et attendre...Zzzzzzzz !
Ceux que j'ai vu sur le site me paraissaient bien compliqués par rapport à ce qui est nécessaire.
Si vous voyez quelque chose qui n'est pas correct (mauvais respect du protocole, bugs, ....) hésitez pas à me le signaler.
Je ne prétends pas avoir fait quelque chose de nickel chrome, loin de là (sûrement codé trop vite :p) !
 

Conclusion

Pensez à renommez l'exécutable de *.ex_ en *.exe.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

18 février 2007 11:31:30 :
- Ajout des CloseHandle() nécessaires ; - Proposition d'ouverture ou non du fichier, à la fin du téléchargement.
23 février 2007 14:45:26 :
- Correction du souci pour certains téléchargements (URL spécifiée par deck_bsd) => passage aux requêtes HTTP v1.1 au lieu de 1.0 ; - Amélioration des messages d'erreurs ; - Ajustements sur l'interface.
25 février 2007 14:16:22 :
- Affichage du débit instantané ; - Arret du calcul du débit quand en pause ; - Prise en charge des URL redirigées.

Commentaires et avis

signaler à un administrateur
Commentaire de SAKingdom le 17/02/2007 18:04:56

Tu ne ferme pas hTelechargement avec CloseHandle?

signaler à un administrateur
Commentaire de yoyo269 le 17/02/2007 18:13:16

Bien non !
Où me conseillerais-tu de mettre le CloseHandle ?
J'ai pensé à la fin du thread (juste avant le return 0;), mais j'ai un gros doute. :(

YOYO, @+.

signaler à un administrateur
Commentaire de BruNews le 17/02/2007 21:24:13 administrateur CS

C'est viable en sortie de thread.

signaler à un administrateur
Commentaire de sterkasor le 18/02/2007 11:20:19

je veux cacher par exemple le url de telechargement pour mettre url d'un fichier sur mon site qui sera fix (on pourra pas changer url de fichier), ou je dois modifier?

signaler à un administrateur
Commentaire de sterkasor le 18/02/2007 11:22:10

et lancer automatiquement le fichier telecharger a la fin de telechargement.
meme si c'est possible fermer le ton prog?

signaler à un administrateur
Commentaire de yoyo269 le 18/02/2007 11:35:15

Source modifiée !
Sterkasor, si tu veux fixer l'url du fichier, fixe la valeur de la variable qui corresponde à l'url.
Tu n'as qu'à remplacer ceci :
strcpy(Chemin, PrendreTexte(TextBoxhWnd[1]));
par cela :
strcpy(Chemin, "http://serveur/dossier/sous-dossier/nom_fichier.ext");

Pour l'ouverture du programme, j'ai modifié la source pour que l'ouverture soit proposée à l'utilisateur.

YOYO, @+.

signaler à un administrateur
Commentaire de deck_bsd le 18/02/2007 12:27:05

Bonne source yoyo :) comme toujours, Tu es en 64 bits? car si tu ne l'es pas, je comprend pas trop alors l'utilisation d'un atoi64 par rapport à l'utilisation d'un atoi standart ?


++ Yoyo

signaler à un administrateur
Commentaire de yoyo269 le 18/02/2007 13:02:52

Salut deck_bsd et merci ! ;)
Le atoi64 c'est au cas où le fichier fait plus de 4 Go. C'est rare, c'est vrai, mais une image DVD dépasse cette valeur.
Donc ce n'est pas codé en 64 bits, mais certaines variables gérant la taille du fichier sont codées sur 64 bits.
Du coup avant de dépasser la valeur max d'un entier de 64 bits...les poules auront des dents !!!

YOYO, @+.

signaler à un administrateur
Commentaire de sterkasor le 18/02/2007 14:58:48

Salut YOYO269
merci j'ai essaye cela fonction bien!
j'utilise Dev-C++ je ne sais pas comment supprimer la zone d'url?
que je dois faire pour cela?

merci

signaler à un administrateur
Commentaire de sterkasor le 18/02/2007 15:14:18

Re,
je n'ai toujours pas reussi a lancer le telecharge a la fin de telechargement :=(

signaler à un administrateur
Commentaire de sterkasor le 18/02/2007 16:04:34

CloseHandle() doit etre placer ou exactement?

signaler à un administrateur
Commentaire de yann_lo_san le 18/02/2007 18:38:27

Bonne source ! je te mets 8/10.

signaler à un administrateur
Commentaire de yoyo269 le 18/02/2007 23:09:28

Merci yann_lo_sann, c'est sympa ! ;)
Sterkasor > Le CloseHandle(), pour le trouver fais une recherche il est dans le code source mis à jour.
Si tu parles d'ouvrir le fichier à la fin du téléchargement, cela est proposé dans le code mis à jour.
Enfin pour enlever la zone de texte où tu rentres l'URL, regarde du côté de la fonction CreerInterface().

YOYO, @+.

signaler à un administrateur
Commentaire de sterkasor le 19/02/2007 00:28:03

Merci YoYo269,
c'est parfait! exactement comme je cherchais :)


@+

signaler à un administrateur
Commentaire de gamemonde le 21/02/2007 01:55:00

Tres bonne source code mais je ne vois que des fichiers h et un fichier cpp

Très interessent cela permet de faire beaucoup de chose un update menager...


salut

signaler à un administrateur
Commentaire de yoyo269 le 21/02/2007 11:19:05

Merci Gamemonde !
Effectivement il y a bcp de .h et peu de .cpp.
C'est une mauvaise habitude que j'ai prise, et que je suis en train d'essayer de modifier.
Donc évitez de prendre exemple sur cette 'technique'.
En effet, cette source est (je pense) une bonne base pour pouvoir faire de nombreuses choses, diverses et variées (gestionnaire de téléchargements, fonction de mise à jour, ...).
En ce moment, j'essaie d'ajouter le téléchargement par FTP, mais c'est beaucoup plus complexe.
Ce que j'ai fait, pour l'instant, marche, mais sur une patte. ;-)
A suivre...

YOYO, @+.

signaler à un administrateur
Commentaire de Dr_Progz le 21/02/2007 14:38:52

J'ai essayer de compiler ton programme sous Visual C++ 6, mais cela ne marche pas, je te donne des modification a faire pour rendre ton programme compatible DevC++ et MSVC :

- Dans le fichier 'Fichiers_Dossiers.h' : ajoute en haut
#ifndef INVALID_FILE_ATTRIBUTES
#define INVALID_FILE_ATTRIBUTES (DWORD (-1))
#endif
#ifndef BIF_NEWDIALOGSTYLE
#define BIF_NEWDIALOGSTYLE 0x0040
#endif

- Dans le fichier 'YoyoDown.h' : dans la fonction 'FenetreProc' : dans la 'case WM_CTLCOLORSTATIC' : retire la declaration de i de la for, tu met int i; for....

en fin pour le linker utiliser la lib 'ws2_32.lib'

Comme ca le programme sera compilable sous MSVC et Dev.

Autre chose : La fonction 'ModifURL' est mal codée :

char *ptr = URL;
while (*ptr)
{
char c = get_stand_char(*ptr);
if (c != -1)
{
*ptr = c;
ptr++;

char *ptr2 = ptr;
while(*(ptr2 + 2))
{
*ptr2 = *(ptr2 + 2);
ptr2++;
}
*ptr2 = 0;
}
else
ptr++;
}

char get_stand_char(char* s)
{
switch (*s)
{
case '%0':
switch (*(s+1))
{
case '9': return ('\t');
.
.
.
}
break;
.
.
}

return (-1);
}

signaler à un administrateur
Commentaire de deck_bsd le 21/02/2007 16:09:35

okidoki yoyo, merci pour ton explication :D

signaler à un administrateur
Commentaire de deck_bsd le 22/02/2007 19:00:07

re yoyo , juste pour signaler que avec un lien de ce type :

http://www.atlence.com/calculre/[atlence]_code_des_couleurs_des_resistances.pdf

le programme me met URL invalide.

signaler à un administrateur
Commentaire de yoyo269 le 22/02/2007 19:07:25

Ah super ça Deck_bsd !
Je regarde ça de plus près et je vous tiens au courant.
je pense pas que ça soit bien méchant. ;)

YOYO, @+.

signaler à un administrateur
Commentaire de sterkasor le 23/02/2007 12:23:37

Sans demander au utilisateurs comment on peut lancer le fichier telecharger? et fermer l'appli a la fin de telechargement?

signaler à un administrateur
Commentaire de yoyo269 le 23/02/2007 12:44:53

Désolé Sterkasor mais faut pas abuser.
Si tu ne vois pas comment faire ce que tu me demandes, faut sincèrement penser à apprendre le C et à faire des recherches.

Sinon deck_bsd, c'est pas un cadeau que tu m'as fait avec ton URL ! :p
Le serveur me répond en disant que le fichier est temporairement déplacé et donc je récupère la nouvelle URL qu'il me fournit, me reconnecte à cette nouvelle URL et envoie la requête.
A chaque fois, il me dit que le fichier a temporairement changé d'URL.
Je continue à chercher. Je sens que je vais apprendre des trucs. ;)

YOYO, @+.

signaler à un administrateur
Commentaire de sterkasor le 23/02/2007 12:48:29

Desole yoyo269!
mon but etait apprendre jsutement.

merci

signaler à un administrateur
Commentaire de yoyo269 le 23/02/2007 12:52:20

Si tu veux apprendre, cherche des tutoriaux en C et procure toi un bouquin de C. C'est le mieux.
Un conseil ne grille pas les étapes en voulant apprendre trop vite.
Je sais c'est frustrant, mais si par exemple tu n'arrives pas à maitriser le principe de boucle et de condition ou encore bien différencier les différents types de variables, ça va être (TRES) difficile pour le reste, voire impossible.

YOYO, @+.

signaler à un administrateur
Commentaire de yoyo269 le 23/02/2007 14:56:22

Mise à jour faite !

Deck_bsd > Ca y est le problème semble corrigé. En fait, avant j'utilisais des requêtes HTTP 1.0 et visiblement en utilisant des requêtes HTTP 1.1, ça passe ! ;)
Hésite pas à tester encore et encore pour trouver autre chose qui cloche. :p

Dr_progz > Merci pour les infos d'adaption, mais je laisse à chacun le soin d'adapter à ça guise. En tous cas, ils sauront où regarder pour pouvoir compiler sur VC++. ;)
Dans cette mise à jour, j'ai également modifié la fonction ModifURL(), dont tu avais parlé.
Je l'avais codée comme un barbare, façon brute de décoffrage. lol
En prenant ta méthode (et en corrigeant une petite erreur pas méchante), je l'ai incluse dans le code.

YOYO, @+.

signaler à un administrateur
Commentaire de deck_bsd le 23/02/2007 16:18:43

Bien joué yoyo :D


Ne te tracasse pas pour cela, j'en ai encore un je pense :D Mais je ne suis pas chez moi donc je te dirai ça ce soir ou demain.

signaler à un administrateur
Commentaire de yoyo269 le 23/02/2007 18:23:57

J'ai hâte de voir ça !
Bon sang, qu'est-ce qu'il va me sortir encore ??? LOL :D

YOYO, @+.

signaler à un administrateur
Commentaire de yoyo269 le 25/02/2007 14:18:43

Nouvelle mise à jour !
Prise en charge des URL redirigées.
Merci à toi Deck_bsd pour m'avoir dégoter des URL avec lesquelles ça foirait.
Hésite pas à en chercher d'autres ! ;)

YOYO, @+.

signaler à un administrateur
Commentaire de Space_Monkey le 25/02/2007 20:12:24

Heuu si c'est pas trop demander, on pourrait avoir le contenu de cette modification concernant les redirections? ^^
Merci d'avance Yoyo!

signaler à un administrateur
Commentaire de yoyo269 le 25/02/2007 20:40:33

Ben c'est dans le code source Space_Monkey !
Il y a un commentaire qui dit quelque chose de ce genre : "// Vérification s'il y a redirection"
Je ne vois pas très bien ce que tu veux dire. :(

YOYO, @+.

signaler à un administrateur
Commentaire de Space_Monkey le 25/02/2007 21:12:50

Désolé j'ai pas été très explicite.. Voici le contenu de la mise à jour. J'ai laisser que les comentaires, sauf la condition du if et le goto qui d'après moi sont importants à signaler pour bien comprendre.

// On vérifie s'il y a une redirection
if(Tmp[0] == '3' && Tmp[1] == '0' && (Tmp[2] == '1' || Tmp[2] == '2'))
{
// On ferme la connexion actuelle
// on récupère la nouvelle URL
// On modifie l'URL affichée
goto Reconnexion;
}

Ensuite j'ai plusieurs questions à poser:
- Je ne comprend pas ton test, comment peux tu en déduire qu'il s'agit d'une redirection?
- Cette question est en lien étroit avec la premiere: Quelle est la différence (au niveau html) entre une url simple et une url avec redirection?
-Les pages générées lors des redirections sont elles standard et te bases tu là dessus pour effectuer ton test?

Je ne penses pas qu'il faille répondre à chaque question indépendament. J'ai bien fait une recherche sur le sujet mais à chaque fois j'en revient à la meme question: Pourquoi ton test semble-t-il simple alors que les méthodes de redirections sont variées? (avec Apache, en html, en php, ...)

signaler à un administrateur
Commentaire de yoyo269 le 25/02/2007 21:57:14

Alors là Space_monkey, il faut étudier le protocole HTTP.
Voilà une page qui devrait t'aider :
http://www.commentcamarche.net/internet/http.php3

En fait quand tu envoies une requête HTTP (GET http://balbla.fr/blabla etc...), la réponse que tu reçois contient un code à 3 chiffres (voir lien donné).
Et c'est avec ce code que tu sais à quoi tu as affaire (redirection : 30x).
Les codes ne sont pas parfaitement gérés dans mon programme, mais tu en vois un exemple.
Et dans le cas d'une redirection, l'entête de la réponse contient un champ "Location: ", qui te donne la nouvelle URL avec laquelle tu dois effectuer une nouvelle requête.

J'espère avoir été assez clair ! ;)

YOYO, @+.

signaler à un administrateur
Commentaire de Space_Monkey le 25/02/2007 22:01:31

Très clair! Merci beaucoup pour cette aide ;-) En espérant que ca servira à d'autres.

signaler à un administrateur
Commentaire de deck_bsd le 06/04/2007 19:04:11

Hey yoyo,

encore une cole :D

URL :
http://www.youtube.com/get_video?video_id=d-MYVv4tgQc&l=209&t=OEgsToPDskI4J_skDyN14ufOe4WT1jWp&sk=MtPNsSdCFzOzkNDOHdZj4wC

signaler à un administrateur
Commentaire de hijakhakker le 17/12/2007 19:56:42

salut yoyo
ton programme m'est tres utile et je trouve que son importance didactitiel est enorme
je me demande pourquoi tu n'a pas inclue un mode de reception pour le Chunked Transfer-Encoding qui permettera de recevoir le fichier sans savoir la taille auparavent mais recevoir des paquet ou partie terminé par crlf?

signaler à un administrateur
Commentaire de yoyo269 le 17/12/2007 20:47:32

Merci hijakhakker.
En fait avec ce mode (que je ne connais pas :p) on doit pas pouvoir utiliser une barre de progression.
Mais c'est une idée.

YOYO, @+.

signaler à un administrateur
Commentaire de shuttleur le 28/12/2007 11:11:36

Bonjour YOYO269

Je m'intéresse beaucoup à ton projet, surtout pour apprendre la création de fenêtres sous Windows, il reste un truc que j'ai pas compris (oui bon enfin disons un :) ) :

- où est définie la classe PROGRESS_CLASS pour créer ta progressbar ?

Merci d'avance

signaler à un administrateur
Commentaire de yoyo269 le 28/12/2007 11:22:32

Bonjour shuttleur.

Je n'en suis pas certain mais il me semble que la classe est définie dans windows.h. En fait c'est un define de windows, du win32.

YOYO, @+.

signaler à un administrateur
Commentaire de shuttleur le 28/12/2007 11:27:38

Il semble que non d'après les tutos que j'ai lus.

Tous parlent d'utiliser "Common control library" (comctrl32.dll) et de modifier le fichier de ressources, mais je ne trouve pas comment faire sans fichier de ressources.

C'est d'autant plus incompréhensible que je ne vois aucune trace de telles manip dans ton code.

signaler à un administrateur
Commentaire de yoyo269 le 28/12/2007 11:49:08

Regarde ici :
http://msdn2.microsoft.com/en-us/library/ms697647.aspx

Extrait :
"The window class name for a progress bar control is PROGRESS_CLASS, which is defined as "msctls_progress" in Commctrl.h."

Le site de la MSDN est particulièrement pratique pour se genre de chose. Pense à le mettre en favori ;)

YOYO, @+.

signaler à un administrateur
Commentaire de shuttleur le 28/12/2007 12:07:04

Merci ;)

Remplacer PROGRESS_CLASS dans les arguments de CreateWindowEx par "msctls_progress" n'a pas suffit, bizarrement, il a fallut le remplacer par "msctls_progress32"..

Je ne sais pas si ca va géner pour la suite

a+ !

signaler à un administrateur
Commentaire de gf18 le 23/07/2008 13:15:32

Je ne suis pas un spécialiste en API win32, mais

case SC_CLOSE:
ShowWindow(frmhWnd, SW_HIDE);
return 0;
break;
case SC_MINIMIZE:
ShowWindow(frmhWnd, SW_MINIMIZE);
return 0;
break;
case SC_MAXIMIZE:
ShowWindow(frmhWnd, SW_MAXIMIZE);
return 0;
break;
case SC_RESTORE:
ShowWindow(frmhWnd, SW_RESTORE);
return 0;


Est-ce vraiment nécessaire?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Gtk et Devc++ [ par VinceExtense ] Je cherche des infos pour dévelloper Gtk avec Devc++.J'ai chercher des infos sur le forum de codes-sources et sur internet mais je n'ai rien trouvé.De Firefox csbar v1.1 [ par nightlord666 ] Bon bah je vais reposter le sujet içi, vu que jesusonline a du m'oublier... Après quelques sujets sur le forum, je me suis rendu compte que certaines Télécharger fichier via HTTP sous linux [ par rclsilver02 ] Bonjour, je cherche depuis quelque temps comment télécharger un fichier via http sous linux. j'ai bricolé un tit truc avec socket() et cie mais c'est Téléchargement http [ par minet03 ] Coucou, voilà j'aimerai savoir si c'est possible, et comment, de télécharger un morceau de fichier par http (genre pour reprendre un t& telechargement d'un segment de fichier avec http [ par micground ] Bonjour,Nombre de "dowload manager" (gestionnaire de téléchargement) téléchargent les fichiers par partie (resume). Les logiciels Problème avec Devc++ et OpenGL et Glut [ par nisaloncaje ] Bonjour, j'ai des petits problèmes avec la librairie glut.h et j'utilise dev c++.en effet, en faisant quelques recherches sur le forum, j'ai trou compiler ffmpeg sous VC++ 2005 [ par arno03 ] salut allj'essaye de compiler la lib ffmpeg (http://ffmpeg.sourceforge.net) avec Visual C++ 2005 Express mais j'obtient tout un tas d'erreurs : http:/ Devpacks wxWidgets 2.6.3 [ par fredcl ] Bonjour à tous, Une realase candidate de wxWidgets 2.6.3 est arrivée le 13/02/2006. Je vous propose de la tester avec les devpacks pour Dev-Cpp. Atte XPcom xul [ par Bilock ] A titre indicatif. Le pont entre xul, javascript, perl, python et c++ peut être réalisé à l'aide des xpcom et de xpconnect. L'av&# télécharger une page html [ par alphaone ] Comment télécharger une page html puis en extraire que la chaine qui vas de l'octect X à Y?C'est urgent, j'ai plus qu'une heure de bate


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,466 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.