精易论坛

标题: deflate,zlib,gzip 数据压缩模块 [打印本页]

作者: wlp    时间: 2024-3-2 19:31
标题: deflate,zlib,gzip 数据压缩模块
zlib-test.zip (39.4 KB, 下载次数: 215)

只支持数据压缩,不支持文件压缩


补充内容 (2024-9-23 03:01):
https://gitee.com/wlpxxx/zlib-buffer.git  最新版本
作者: 艾玛克138    时间: 2024-3-2 22:08
谢了,很实用,就喜欢这样的资料
作者: shizioo    时间: 2024-3-2 23:31
学习学习
作者: year1970    时间: 2024-3-3 09:17
感谢分享
作者: 网络注册会员    时间: 2024-3-5 20:59
感谢分享
作者: 一指温柔    时间: 2024-3-6 09:02
支持开源~!感谢分享
作者: futiem    时间: 2024-3-8 17:02
支持数据压缩,不支持文件压缩
作者: wenxiao1998    时间: 2024-3-11 19:05
支持数据压缩,不支持文件压缩
作者: 一指温柔    时间: 2024-3-13 10:04
感谢分享,很给力!~
作者: 科技    时间: 2024-3-21 23:12

感谢分享
作者: 80554326    时间: 2024-3-30 15:59
模块开源学习一下
作者: mu396    时间: 2024-4-17 21:08
谢谢分享
作者: imoling    时间: 2024-4-18 15:06
终于找到了,不知道模块是哪个文件下的。模块名称:Tcp3 作者:QQ190796068 版本:1.0 这个tcp的模块。有bug。TCP服务器_停止 (ServerID) 只要服务端还在接收,或者还在发送,不能停止,一停止,不会出错但是后边的命令都不会执行了。。。
作者: wlp    时间: 2024-4-18 15:34
imoling 发表于 2024-4-18 15:06
终于找到了,不知道模块是哪个文件下的。模块名称:Tcp3 作者:QQ190796068 版本:1.0 这个tcp的模块。有bu ...

这不是bug,自己去了解一下hp的特性
作者: imoling    时间: 2024-4-19 08:47
wlp 发表于 2024-4-18 15:34
这不是bug,自己去了解一下hp的特性

要不你自己测试一下吧,很简单,1个用户也行,客户Duan建立连接后。你发一个ping,过去,服务器回一个pong。这时候你在服务端 发起点tcp_停止服务 后边的代码就会卡在这里,即便是先进行tcp_断开客户Duan 再去停止服务 也会卡在这里,我重新去下了原始的hpscockt 是正常的。
作者: xuanyuanhuangdi    时间: 2024-4-20 21:50
只支持数据压缩,不支持文件压缩
作者: wlp    时间: 2024-4-20 22:22
imoling 发表于 2024-4-19 08:47
要不你自己测试一下吧,很简单,1个用户也行,客户Duan建立连接后。你发一个ping,过去,服务器回一个pon ...

发个例子上来。服务器和客户Duan的,扯半天也扯不出什么问题来
作者: imoling    时间: 2024-4-24 15:24
imoling 发表于 2024-4-19 08:47
要不你自己测试一下吧,很简单,1个用户也行,客户Duan建立连接后。你发一个ping,过去,服务器回一个pon ...

真是服了,听不懂别人在说什么,让你自己测试一下也不会么,谁跟你说在回调线程里边停止?你弄个按钮在 在按钮事件中写停止服务你试试,我不跟你瞎掰。还回调线程中停止,你理解能力也是服了。得,我用原版封装一下就好了,跟你扯叶没用。
作者: 艾玛克138    时间: 2024-6-14 00:23
楼主辛苦了
作者: 上千吨水    时间: 2024-7-5 08:46
遇到一个问题   数据长了  只返回一部分内容
作者: wlp    时间: 2024-7-5 16:39
上千吨水 发表于 2024-7-5 08:46
遇到一个问题   数据长了  只返回一部分内容

代码例子,,,,,,,,,
作者: 上千吨水    时间: 2024-7-7 22:00
wlp 发表于 2024-7-5 16:39
代码例子,,,,,,,,,

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
LAAA
作者: 上千吨水    时间: 2024-7-7 22:01
wlp 发表于 2024-7-5 16:39
代码例子,,,,,,,,,

记得用一下 下面这个方法  


.版本 2

.子程序 删空格换行TAB1, 文本型
.参数 cs_文本, 文本型
.局部变量 bin, 字节集
.局部变量 rPos, 整数型
.局部变量 wPos, 整数型
.局部变量 c, 字节型

bin = 到字节集 (cs_文本) + { 0 }
.循环判断首 ()
    rPos = rPos + 1
    c = bin [rPos]
    .如果真 (c ≠ 32 且 c ≠ 10 且 c ≠ 13 且 c ≠ #Tab键)
        wPos = wPos + 1
        bin [wPos] = c
    .如果真结束

.循环判断尾 (c ≠ 0)
返回 (到文本 (bin))

作者: wlp    时间: 2024-7-7 23:45
上千吨水 发表于 2024-7-7 22:01
记得用一下 下面这个方法  

看不懂,易语言源码,那种下载之后运行看到结果的例子,不是一部分代码

别拿个飞机零件说有问题,飞机这么大,我哪里知道哪颗螺丝有问题
作者: n3w3u7    时间: 2024-7-28 21:07
6666666666666666666666666666666666666666666666666666666666
作者: n3w3u7    时间: 2024-7-28 22:04
111111111111111111111111111111111
作者: mytools    时间: 2024-7-28 22:27
感谢分享,下载看看
作者: ikaros    时间: 2025-1-22 11:56
经过测试解压gzip时, 最大耗费时间是字节集数组组合, 后用快速对象类YZC模块中,快速字节集类YZC类替换了数组, 解压速度提升3倍左右, 效果明显压缩效果差不多,
模块下载地址, 请自行下载
https://125.confly.eu.org/forum.php?mod ... 7%E8%8A%82%E9%9B%86


  
子程序名返回值类型公开备 注
GZIP_压缩_MJ字节集 
参数名类 型参考可空数组备 注
data字节集
windowBits整数型为空默认GZIP,-(8~15) 纯deflate   +(8~15)带zlib头和尾   >16带gzip头和尾  【纯deflate】:-15  【zlib】:15 【gzip】:31
chunkSize整数型默认:4096 缓冲区大小
变量名类 型静态数组备 注
strmz_stream 
out字节集 
temp字节集 
err整数型 
字节集快速字节集类YZC 
如果真 (是否为空 (chunkSize))
chunkSize = 4096
如果真 (是否为空 (windowBits))
windowBits = 31

如果真 (DeflateInit (strm, windowBits)#Z_ERROR_OK )
返回 (out)
temp = 取空白字节集 (chunkSize)
strm.next_in = 取变量数据地址 (data)
strm.avail_in = 取字节集长度 (data)
strm.total_in = 0
strm.next_out = 取变量数据地址 (temp)
strm.avail_out = 取字节集长度 (temp)
strm.total_out = 0
err = Deflate (strm, #Z_FLUSH_NO_FLUSH )
如果真 (err = #Z_ERROR_OK )
字节集.添加 (取字节集左边 (temp, strm.total_out))
循环判断首 ()
strm.next_out = 取变量数据地址 (temp)
strm.avail_out = 取字节集长度 (temp)
strm.total_out = 0
err = Deflate (strm, #Z_FLUSH_PARTIAL_FLUSH )
如果真 (err = #Z_ERROR_OK )
判断 (strm.total_out ≠ 0)
字节集.添加 (取字节集左边 (temp, strm.total_out))
跳出循环 ()


循环判断尾 (err = #Z_ERROR_OK )
DeflateEnd (strm)
返回 (字节集.取字节集 (, ))
子程序名返回值类型公开备 注
GZIP_解压_MJ字节集 
参数名类 型参考可空数组备 注
data字节集
windowBits整数型-(8~15) 纯deflate   +(8~15)带zlib头和尾   >16带gzip头和尾  【纯deflate】:-15  【zlib】:15 【gzip】:31
chunkSize整数型默认:4096 缓冲区大小
变量名类 型静态数组备 注
strmz_stream 
out字节集 
temp字节集 
err整数型 
字节集快速字节集类YZC 
如果真 (是否为空 (chunkSize))
chunkSize = 4096
如果真 (是否为空 (windowBits))
windowBits = 31
如果真 (InflateInit (strm, windowBits)#Z_ERROR_OK )
返回 (out)
temp = 取空白字节集 (chunkSize)
strm.next_in = 取变量数据地址 (data)
strm.avail_in = 取字节集长度 (data)
strm.total_in = 0
循环判断首 ()
strm.next_out = 取变量数据地址 (temp)
strm.avail_out = 取字节集长度 (temp)
strm.total_out = 0
err = Inflate (strm, #Z_FLUSH_NO_FLUSH )
判断 (err = #Z_ERROR_OK )
判断 (strm.total_out ≠ 0)
字节集.添加 (取字节集左边 (temp, strm.total_out))
跳出循环 ()

判断 (err = #Z_ERROR_STREAM_END )
err = Inflate (strm, #Z_FLUSH_PARTIAL_FLUSH )
如果真 (strm.total_out ≠ 0)
字节集.添加 (取字节集左边 (temp, strm.total_out))
跳出循环 ()



循环判断尾 (err = #Z_ERROR_OK )
InflateEnd (strm)
返回 (字节集.取字节集 (, ))


i支持库列表   支持库注释   
spec特殊功能支持库







欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4