Tag: gzip

C.循环压缩+发送(gzip)ZLIB

我目前正在用C构建一个HTTP服务器。 请注意这段代码: #define CHUNK 0x4000 z_stream strm; unsigned char out[CHUNK]; int ret; char buff[200]; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; int windowsBits = 15; int GZIP_ENCODING = 16; ret = deflateInit2(&strm, Z_BEST_SPEED, Z_DEFLATED, windowsBits | GZIP_ENCODING, 1, Z_DEFAULT_STRATEGY); fill(buff); //fill buff with infos do { strm.next_in = (z_const unsigned char *)buff; strm.avail_in […]

libcurl(linux,C) – 是否有一种内置的POST / PUT压缩请求方式?

我想使用GZIP压缩请求执行HTTP POST和/或PUT(使用libcurl)。 我无法在libcurl中找到任何本机支持,我想知道我是否找不到正确的文档或者是否真的没有这方面的支持? (即我是否必须实现自己的包装器来gzip请求体?)

是否有适用于C或C ++的跨平台gzip处理器库?

我想要一些库(API)来打开,搜索,读取,写入……(用一个词来处理 )gzip文件。 C或C ++是否有任何开源跨平台的?

使用zlib的gzip文件访问function解压缩文件大小

使用linux命令行工具gzip我可以使用gzip -l告诉压缩文件的未压缩大小。 我在zlib手册部分“gzip文件访问function”中找不到任何类似的function。 在这个链接上,我找到了一个解决方案http://www.abeel.be/content/determine-uncompressed-size-gzip-file ,它涉及读取文件的最后4个字节,但我现在正在避免它,因为我更喜欢使用lib的function。

如何检查文件是否被gzip压缩?

我有一个C / C ++程序需要读取一个文件,该文件可能是也可能不是gzip压缩的。 我知道我们可以使用zlib中的gzread()来读取压缩文件和未压缩文件 – 但是,如果文件是gzip压缩的,我只想使用zlib函数(出于性能原因)。 那么有什么方法可以以编程方式检测或检查某个文件是否是从C / C ++中解压缩的?

http服务器响应(套接字)的标头和内容之间不同

我想知道,有没有可能找出响应Stream中标题结束的位置? 问题的背景如下,我在c中使用套接字从网站获取内容,内容以gzip编码。 我想直接从流中读取内容并使用zlib对gzip内容进行编码。 但我如何知道gzip内容已启动且http标头已完成。 在我看来,我大致尝试了两种给我一些奇怪结果的方法。 首先,我在整个流中读取,并在终端中打印出来,我的http标题以“\ r \ n \ n \ n \ n”结束,就像我预期的那样,但是时间紧迫,我只需要检索一次响应以获取标题然后使用while循环读取内容,此处标题结束时不带“\ r \ n \ n \ n \ n”。 为什么? 哪种方式是阅读内容的正确方法? 我只是给你代码,这样你就可以看到我是如何从服务器获得响应的。 //first way (gives rnrn) char *output, *output_header, *output_content, **output_result; size_t size; FILE *stream; stream = open_memstream (&output, &size); char BUF[BUFSIZ]; while(recv(socket_desc, BUF, (BUFSIZ – 1), 0) > 0) […]