Je travaille sur un projet dans lequel si quelque chose ne va pas sur mon disque, j'enverrai des morceaux de mémoire sur un autre disque après l'avoir compressé en utilisant ZLIB. Ce vidage, puis je prévois de télécharger et d'utiliser pour le débogage ultérieur. La compression et le téléchargement doivent être faits un morceau à la fois - disons 1024 K.compression ZLIB
La capture est que je dois avoir des morceaux de sortie de exactement 1024K avant de le télécharger sur l'autre disque (en plus de cela il y aura des en-têtes et bandes-annonces ainsi si cette taille de morceau est la taille des données compressées) comme alors je peux facilement les décompresser et l'utiliser. J'ai essayé de changer la fonction put_byte de telle sorte qu'une fois que le tampon de sortie est 1024K je peux l'envoyer à l'autre disque mais cela ne semble pas fonctionner.
J'ai pensé à vérifier Z_BUF_ERROR puis à l'envoyer et à redémarrer toute la procédure de compression, mais je ne serais pas sûr que toutes les entrées/sorties en attente aient été vidées. Y a-t-il une autre façon de procéder, c'est-à-dire de m'assurer que les paquets sont envoyés lorsque le tampon de sortie (taille des données compressées) a exactement 1024K octets.
O/P? OP? IP? Se il vous plaît définir. –
O/P ou OP => tampon de sortie stockant les données compressées IP ou I/P => tampon d'entrée stockant les données brutes. – Zshn
Si vous voulez simplement décomposer la sortie de 'deflate()' en morceaux de 1K, alors fournissez 'deflate()' avec 1K de sortie, c'est-à-dire 'strm.avail.out = 1024;'. Fournissez une entrée à 'deflate()' jusqu'à 'strm.avail.out == 0' ou vous n'avez plus d'entrée. Ensuite, écrivez ce morceau. –