[http] téléchargement d'un fichier par le protocole http 1.1

Soyez le premier à donner votre avis sur cette source.

Vue 9 782 fois - Téléchargée 993 fois

Description

Permet de télécharger un fichier avec le protocole http en supprimant le header (HTTP/1.1 200 OK,....) et en gérant le découpage en morceau (Transfer-Encoding : chunked).
Il lit le status (200 OK, ...) et le type d'encodage (chunked)

Source / Exemple :


//reste du code dans le zip

int main()
{
        int sock=-1;
	char server_name[]="killingskill.ke0.eu";
	char request_host[]="killingskill.ke0.eu";
	char request_path[]="/";
	char fichier[]="index.php";
	int port=80;

	WSADATA wsa;
	WSAStartup(MAKEWORD(2,0),&wsa);	

        HTTPreader http;
	if(http.connection(server_name,port)<0)
	   return -1;
        http.load(request_host,request_path,fichier);
        http.save(fichier);
	WSACleanup( );
	system("pause");
	return 0;
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
36
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
7 novembre 2010

Bon code, juste ce qu'il me falait pour l'utilisation du mode de transfert "chunked".

Tu code en C++ objet, donc 2 petit conseil.
1- Bumpman l'a dit, tu oubli de liberer la memoir alloué avec free();.
Un malloc(); et toujours suivit d'un free();

2- En realiter, avec les classes il est preferable d'utiliser
les operateur new et delete.
C'est une abitude a prendre car C++ gerent mieux ces operateurs pour pouvoir appeler le constructeur et le destructeur d'une classe lorsqu'on alloue celle ci dynamiquement.

char * buf;

buf=new char [nbtab]; // creer un tableau de nbtab carractere

//tu utilise ton buffer

delete buf; //important, et oui sans sa la variable reste allouer
// ta RAM n'est pas infini. La derniere foi que j'ai mal ordoner mes allocation, mon PC c'est etein (je croi que la RAM etait devenu inaxessible)
Messages postés
59
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2010
8
Oh purééé! je suis vraiment con! plus con que moi tu meurs! C'est normal que j'ai ces erreurs c'est parce que ce code je l'ai fait à 4h du mat et j'ai pas dormis donc je codé comme un pied et quand je l'ai relus j'ai trouvé que je l'ai malle codé!

Voila le bon code:

destination.erase(); // std::string
char buffer[128];
int n;
while((n=recv(sock,buffer,sizeof(buffer)-1,0))>0)
{
buffer[n]='\0';
destination+=buffer;
}
Messages postés
59
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2010
8
euh une petite correction, sizeof(cs)-1 et non pas sizeof(cs)
Messages postés
59
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2010
8
Dite moi svp j'ai un petit probléme.
J'ai fait une fonction pour recuperer le contenue d'une page mais le probléme c'est que j'ai des caracteres en plus comme des "fef" ou des A qui s'ajoute au contenue qui n'existe pas quand je verifie avec IE ou firefox.

voila le morceau de code qui gere l'envoye et la reception des requettes :

sprintf(reqHTTP,"GET /index.php HTTP/1.1\r\nConnection: Close\r\n\r\n");
send(sock,reqHTTP,strlen(reqHTTP),0);
destination.erase(); // std::string
char cs[96];
while(recv(sock,cs,sizeof(cs),0)>0)
destination+=cs;


Voila, merci d'avance pour votre aide.
Messages postés
59
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2010
8
d'un fichier...*
Afficher les 9 commentaires

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.