100分全部送了,求解决zlib问题?

时间:2021-10-08 12:05:14
想用zlib实现服务端与客户端之间数据传输的一个压缩与解压缩操作,由于是新人有以下几个问题请各位前辈解答

1.如果大量的数据肯定不能一次性压缩,那么就是一个文件分成几部分压缩了?据悉压缩一次就会在这部分头增加一个压缩信息头。如果我分10部分,那么增加10个信息头。

这样理解对不对?前辈们知道或者用的也是这样的方式吗?这个缓冲区定义多大比较好?

2.zlib压缩“一段”数据的时候,尽量不管数据格式或者内容(由接收端解压后再做相应的处理),我现在使用zlib压缩这个数据,怎么使用.

理解的是直接当压缩字符类型数据处理,其他zlib.h直接提供了函数处理吗?或者应该用其他方式压缩?这个求具体代码

Win32程序,不是MFC,谢谢大家

12 个解决方案

#1


zlib 压缩字符串..其实万物都是字符串.. char* .. 能存储任何数据

#2


是否这样理解 zlib压缩不会存在什么压缩信息头概念?求解释

#3


zlib压缩buffer.当然会生成buffer必要的信息.比如buffer 的校验数. buffer大小...
这个空间消耗可以忽略不计.因为他压缩数据可以节约更大的空间.

#4


引用 3 楼 smwhotjay 的回复:
zlib压缩buffer.当然会生成buffer必要的信息.比如buffer 的校验数. buffer大小...
这个空间消耗可以忽略不计.因为他压缩数据可以节约更大的空间.


ok,那么这个缓冲区定义多大比较好(小一点比较好的话)?还有zlib.h直接提供了函数处理吗?或者应该用其他方式压缩?这个求具体代码
---------------------------------------
输入缓冲区内容 出来应该是缓冲区内容(压缩后),这样我发送压缩后的缓冲区

#5


zlib自己就有函数

#6


求压缩名 处理方式 例子,请见谅我不太懂zlib

#7


学习了。。

#8


继续顶上去

#9


帮顶le 

#10


zlib压缩,当然要构造一个头,全依赖那个头实现加解压的
如果你用zlib传输数据,通常你还要构造你自己的信息头,其中至少包含两个字段:原始数据长度,压缩数据长度(==你实际传送的数据长度),以方便接收方验证 和 管理缓存区

一块数据多大为合适,主要取决于网络状况,从zlib的压缩比看,当然块越大,压缩比越高,但是实际上不能那么傻,大的数据,总是分块压缩,传送...这样的处理使通讯程序有更多的灵活性

#11


作为数据块的加解压,你只需用到zlib的两个函数
compress
uncompress

#12


引用 11 楼 ok1234567 的回复:
作为数据块的加解压,你只需用到zlib的两个函数
compress
uncompress


恩  我会看看
---------------
从zlib的压缩比看,当然块越大,压缩比越高,但是实际上不能那么傻,大的数据,总是分块压缩,传送...这样的处理使通讯程序有更多的灵活性

这主要是这个缓冲区在内存中太大始终不太好,接收还要有等量的缓冲区来处理这个内容以便响应到一些窗口

#1


zlib 压缩字符串..其实万物都是字符串.. char* .. 能存储任何数据

#2


是否这样理解 zlib压缩不会存在什么压缩信息头概念?求解释

#3


zlib压缩buffer.当然会生成buffer必要的信息.比如buffer 的校验数. buffer大小...
这个空间消耗可以忽略不计.因为他压缩数据可以节约更大的空间.

#4


引用 3 楼 smwhotjay 的回复:
zlib压缩buffer.当然会生成buffer必要的信息.比如buffer 的校验数. buffer大小...
这个空间消耗可以忽略不计.因为他压缩数据可以节约更大的空间.


ok,那么这个缓冲区定义多大比较好(小一点比较好的话)?还有zlib.h直接提供了函数处理吗?或者应该用其他方式压缩?这个求具体代码
---------------------------------------
输入缓冲区内容 出来应该是缓冲区内容(压缩后),这样我发送压缩后的缓冲区

#5


zlib自己就有函数

#6


求压缩名 处理方式 例子,请见谅我不太懂zlib

#7


学习了。。

#8


继续顶上去

#9


帮顶le 

#10


zlib压缩,当然要构造一个头,全依赖那个头实现加解压的
如果你用zlib传输数据,通常你还要构造你自己的信息头,其中至少包含两个字段:原始数据长度,压缩数据长度(==你实际传送的数据长度),以方便接收方验证 和 管理缓存区

一块数据多大为合适,主要取决于网络状况,从zlib的压缩比看,当然块越大,压缩比越高,但是实际上不能那么傻,大的数据,总是分块压缩,传送...这样的处理使通讯程序有更多的灵活性

#11


作为数据块的加解压,你只需用到zlib的两个函数
compress
uncompress

#12


引用 11 楼 ok1234567 的回复:
作为数据块的加解压,你只需用到zlib的两个函数
compress
uncompress


恩  我会看看
---------------
从zlib的压缩比看,当然块越大,压缩比越高,但是实际上不能那么傻,大的数据,总是分块压缩,传送...这样的处理使通讯程序有更多的灵活性

这主要是这个缓冲区在内存中太大始终不太好,接收还要有等量的缓冲区来处理这个内容以便响应到一些窗口