2012-11-13 6 views
2

네트워크를 통해 압축 된 데이터를 전송하는 데 문제가 있습니다.zlib, 압축 된 데이터 청크의 스트림을 압축 해제하는 방법?

데이터 크기는 약 수백MB입니다. 내 계획은 데이터를 1MB 청크로 나누고 각 청크를 zlib로 압축 한 다음 네트워크를 통해 압축 된 데이터를 스트리밍하는 것입니다. 네트워크의 다른 쪽 끝에서는 데이터가 zlib에 의해 압축 해제됩니다.

제 질문은 압축 된 데이터를 스트리밍하기 때문에 각 압축 된 청크가 시작되고 스트림에서 끝나는 위치에 대한 정보가 없습니다. zlib이 압축 된 데이터 스트림을 압축 해제 할 수 있는지 확실하지 않습니다.

zlib 할 수 있으면, 제발 내게 당신이 수축/부풀려 방법에 사용해야하는 플러시 모드를 알려주시겠습니까?

감사합니다.

답변

1

왜 데이터를 청크로 나누는 지 또는 왜 특별한 플러시를해야하는지 명확하지 않습니다. zlib에 데이터를 넣는 것만으로 zlib가 일반적으로 사용되는 방법입니다. zlib는 데이터를 먹이는 방법에 상관하지 않습니다. 큰 덩어리, 작은 덩어리, 한 번에 한 바이트, 한 거대한 덩어리 등은 압축 결과를 변경하지 않습니다.

플러싱은 압축 된 결과를 변경하여 플러시 빈도와 플러시 방법에 따라 압축 결과를 약간 또는 크게 저하시킵니다.

플러시는 데이터의 일부가 압축 된 데이터의 알려진 경계에서 완전히 수신되도록하거나 모든 데이터가 수신되지 않은 경우 데이터의 일부를 복구 할 수 있도록하려는 경우에 사용됩니다 .

0

사용한 전략이 필수 인 경우, 같은 호스트와 원격 사이의 프로토콜을 만들 수 :

02 123456 the-compressed-data 654321 the-compressed-data 

3 개 번호는 다음과 같습니다 데이터의 덩어리의 1. 수는 여기 2 청크 2. 첫 번째 청크의 바이트 3. 두 번째 청크의 바이트는 각각 입니다.

관련 문제