J'utilise des sockets avec C++. Le programme demande simplement une page HTTP, le lit dans un tampon buf[512]
, puis affiche le tampon. Cependant, les pages peuvent contenir plus de données que le tampon, il sera donc coupé s'il n'y a plus d'espace disponible. Je peux augmenter la taille de la mémoire tampon, mais cela ne semble pas être une bonne solution. Voici le code que j'utilise:Que dois-je utiliser comme tampon en C++ pour recevoir des données de sockets réseau?
char buf[512];
int byte_count = recv(sockfd, buf, sizeof(buf), 0);
Quelle serait une alternative à un tableau de caractères en C++ pour l'utiliser comme un tampon?
Puisqu'il s'agit d'une requête HTTP, la taille de la page peut être contenue dans les informations d'en-tête. Si vous pouvez récupérer que vous pouvez dynamiquement allouer de la mémoire (utilisez std :: vector) pour contenir toute la page. Notez simplement que le serveur Web envoyé 200 octets ne signifie pas que vous les recevrez dans un bloc. Le transport est autorisé à le décomposer en plus petits blocs et vous devez boucler jusqu'à ce que recv() renvoie 0 ou un code d'erreur. –