Alors je veux faire une petite appli qui permet de télécharger des fichiers sur le net suivant le protocole HTTP dont voici le code de la partie qui va chercher le fichier:
void getfile(SOCKET sock,SOCKADDR_IN sin,char* file){
FILE * infile;
infile = fopen(file,"wb");
char* mes = new char[255];
char* buffer = new char[1024];
int byteget;
bool header = false;
char* buf2;
connect(sock,(SOCKADDR *)&sin,sizeof(sin));
sprintf(mes,"GET /home/patcher/%s HTTP/1.0\r\nConnection: close\r\n\r\n",file);
send(sock,mes,strlen(mes),0);
while((byteget = recv(sock,buffer,1024,0)) > 0 ){
if( !header ){
buf2 = strstr(buffer,"\r\n\r\n") + 4;
fwrite(buf2,byteget - (buf2-buffer),1,infile);
header = true;
}else{
fwrite(buffer,byteget,1,infile);
}
}
shutdown(sock,2);
fclose(infile);
}
Je l'utilise dans une boucle dans laquelle je rentre un nom de fichier a télécharger, ça marche parfaitement la première fois (fichier complet sans soucis) mais si je lance un 2e téléchargement ensuite, celui-ci me donne un fichier vide... Merci de bien vouloir m'aider ^^