Я использую zlib для выполнения сжатия gzip. zlib записывает данные непосредственно в открытый TCP-сокет после сжатия.Как определить сжатый размер из zlib для gzipped-данных?
/* socket_fd is a file descriptor for an open TCP socket */
gzFile gzf = gzdopen(socket_fd, "wb");
int uncompressed_bytes_consumed = gzwrite(gzf, buffer, 1024);
(конечно, все обработки ошибок удаляются)
Возникает вопрос: как определить, сколько байт были записаны в сокет? Все функции gz * в zlib имеют дело с байтами/смещениями в несжатом домене и говорят (искать) не работают для сокетов.
В заголовке zlib.h говорится: «Эта библиотека может дополнительно считывать и записывать потоки gzip в память». Запись в буфер будет работать (тогда я могу записать буфер в сокет впоследствии), но я не вижу, как это сделать с интерфейсом.
Не уверен, что я что-то упустил, но это, похоже, не генерирует форматированные данные gzip. – Andrew