Bonjour a tous,
effectivement je suis au bord du suicide, nan quand meme pas, mais j'en
dors plus tellement je ne trouve pas de solution et ne comprend pas.
Bon déja, droit au but mon bout de code :
---------------------------------
char *buffer;
buffer=(char *)malloc(sizeof(char)*16581375);
erreur=send(sock,requete,strlen(requete),0);
if(erreur!=SOCKET_ERROR)
{memset(buffer,0,16581375);
ret=recv(sock,buffer,16581375,0);
if(ret>0)
{
buffer[ret] = '\0';
printf("%s",buffer);
}}
---------------------------------
La variable "requete" contient une requete http de type GET,
les données s'envoient et je les recoits et mon petit code comme vous le voyez affiche la réponse du serveur.
Le problème c'est lorsque je demande le "téléchargement" d'une page de
15000 octets par exemple il refuse de stocker plus de 8000 octets et ca
me bloque complétement dans mon programme, car j'ai besoin de "recevoir
toute la page".
La variable ret qui m'indique le nombre de caractères recus a bien
comme valeur 15000 (donc 15000 octets recus) mais le buffer n'en
contient que 8000 (alors qu'il peut contenir 16581375 octets).
J'ai exploré quelques pistes, et ca ne vient pas d'un probleme a
l'affichage. Peut etre d'un probleme d'allocation de mémoire, je sais
pas trop.
Pour infos si ca peut aider, je compile avec BCC (borland compiler (freecommandlinestools) et je suis sous windows xp sp2.
Si quelqu'un trouve rien qu'une piste, ca serait un énorme soulagement,
car j'ai beau regarder d'autres codes du meme genre et personne semble
avoir ce problème.
Merci d'avance