【问题标题】:How to use gzip encoding in C programming without using zlib library如何在不使用 zlib 库的情况下在 C 编程中使用 gzip 编码
【发布时间】:2018-01-24 01:47:44
【问题描述】:

我想在基于 C 的简单 http 服务器中使用 gzip 编码。 但我不想使用 zlib 库。请建议我该怎么做?

【问题讨论】:

  • 你能使用其他类似于zlib的库吗,比如zstd?还是所有图书馆都不在问题范围内?如果是这样,除了“自己写”之外,您还期待什么样的答案?
  • 抱歉,不清楚。确切地说,您的要求是什么?根据这些要求,您尝试了什么?
  • @duskwuff 我不想使用任何库。默认情况下,在 C 标准库中没有任何东西可以让我们对字符串进行编码并通过 HTTP 响应发送。
  • @lurker 我应该以 gzip 格式编码一个片段并通过 HTTP 响应发送它。我想在不使用任何外部库的情况下实现编码。我已将 Content-Encoding 标头更改为 gzip,浏览器显示 content-encoding 错误。
  • @Amaresh 标准 C 库没有 gzip 功能。如果您不想为此使用库,那么恐怕您必须自己编写。

标签: c compression gzip httpserver content-encoding


【解决方案1】:

如果您不能(或拒绝)使用实现 gzip 的库,那么剩下的唯一选择就是自己实现 the DEFLATE algorithm(以及围绕它的 gzip wrapper)。毕竟,这就是 zlib 存在的原因——标准 C 库不包含该算法的实现。

【讨论】:

    【解决方案2】:

    您可以改为运行 gzip 实用程序来压缩数据。然而,在你的代码中直接使用 zlib 库会更有效,因为每次你想响应一个 http 请求时都会派生一个作业。

    或者您可以编写自己的 gzip 格式压缩代码。由于您的问题不清楚为什么要避免使用 zlib,因此不清楚编写自己的压缩器是否能满足您的需求。无论如何,您只需使用 zlib 代码将花费更少的时间,该代码可免费用于任何商业或非商业代码,甚至不需要署名。

    【讨论】:

    • 不,我的意思是使用 pipe()fork() 函数从您的程序中运行 gzip 或同等功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多