从零实现http:(2)zlib使用

一、zlib常用函数
常用数据结构:

typedef struct z_stream_s{
z_const Bytef* next_in;//压缩数据的首地址
uInt avail_in;  	   //压缩数据的长度
uLong total_in;        // 将要压缩数据缓冲区的长度

Bytef *next_out;       // 压缩后数据保存位置。
uInt avail_out;        // 压缩后数据的长度
uLong  total_out;      // 压缩后数据缓冲区的大小

z_const char *msg;     // 存放最近的错误信息,NULL表示没有错误
struct internal_state FAR *state; /* not visible by applications */

alloc_func zalloc;  /* used to allocate the internal state */
free_func  zfree;   /* used to free the internal state */
voidpf opaque;  /* private data object passed to zalloc and zfree */

int data_type;    // 表示数据类型,文本或者二进制
uLong adler;      /* adler32 value of the uncompressed data */
uLong reserved;   /* reserved for future use */
}z_stream;

压缩初始化:

int deflateInit2 (z_streamp strm,int level,int method,int windowBits,int memLevel, int strategy);
strm:  关联的数据结构    
level: 压缩级别,压缩级别是一个0-9的数字,0压缩速度最快(压缩的过程),9压缩速度最慢,压缩率最大,0不压缩数
method: 压缩的模式,现在只有一种。Z_DEFLATED(表示数字8)
windowBits: 表示处理raw deflate的方法。windowBits为8..15,也可以为-8...-15。当值为16时,将会加上一个简单gzip头部和尾部。
memLevel:指定的内部压缩状态,应该分配多少内存。 memLevel=1使用的最小内存,但很慢,降低了压缩比; memLevel=9使用的最大内存以获得最佳的速度。默认值是8。请参阅作为的函数windowBits和memLevel的使用的总内存zconf.h。
strategy:压缩的策略

压缩:

int deflate(z_streamp strm, int flush);
strm:关联的数据结构,要压缩的数据、长度、压缩数据的存放位置和可用大小,都在其中设置的
flush: 采用何种法师将压缩的数据写到缓冲区中。

压缩结束:

int deflateEnd (z_streamp strm);//关联的数据结构

二、URL的组成

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

协议、域名、端口、服务器上的文件路径、参数

三、正则表达式的使用

std::regex pattern("^"+i.first+"|");//定义要匹配的字符
std::cmatch m;//匹配完成得到的结果
bool std::regex_search(url.c_str(),m.pattern);//搜寻

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值