저는 zlib을 사용하여 gzip 압축을 수행하고 있습니다. zlib은 데이터를 압축 한 후 열려있는 TCP 소켓에 직접 데이터를 씁니다.gzip으로 압축 된 데이터의 zlib에서 압축 된 크기를 결정하는 방법은 무엇입니까?
/* 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);
(물론 모든 오류 처리가 제거)
질문입니다 : 어떻게 소켓에 기록 된 바이트 수를 확인할 수 있습니까? zlib의 모든 gz * 함수는 압축되지 않은 도메인의 바이트 수/오프셋을 처리하며 tell (seek)은 소켓에서 작동하지 않습니다.
zlib.h 헤더에 "이 라이브러리는 선택적으로 메모리에 gzip 스트림을 읽고 쓸 수 있습니다."라는 메시지가 표시됩니다. 버퍼에 쓰는 것은 작동 할 것입니다 (그 다음에는 소켓에 버퍼를 쓸 수 있습니다). 그러나 인터페이스를 사용하여 버퍼를 작성하는 방법을 알 수 없습니다.
내가 뭔가를 놓치고 있는지 확실하지 않지만 gzip 형식의 데이터가 생성되지 않는 것 같습니다. – Andrew