关于C ++中的输出缓冲区压缩

时间:2014-01-28 11:33:58

标签: c++ visual-c++

实际上我正在开发一个开源搜索引擎项目,我需要通过搜索文本来发送客户请求。

服务器(开源搜索引擎)必须找到搜索文本的结果并给客户回复....

所以我需要压缩服务器端的输出缓冲区并将其发送到客户端。 例如(假设我正在搜索国家/地区的文本列表并分配内存以仅显示100个国家/地区。

所以服务器找到前100个国家/地区并从服务器向客户端发送响应(根据行为)。

所以,一旦我找到了国家/地区列表,我就会尝试做什么。将压缩输出缓冲区并尽可能多地发送作为对客户端的响应。(由于做了这些事情,我们甚至可以发送向客户方提供200个国家展示)....

客户端将收到响应并将其解压缩以显示)

这不是一个真正的代码....他们正在使用这些过程来产生结果

我刚刚制作了一个Minimal,Complete,Tested和Readable示例

class OutputBuffer
{
   public:
      int data1; // define pointer face
      int data2;
};


void sendresult(OutputBuffer &d);

int main(void)
{
   OutputBuffer d;
   d.data1 = 1;
   sendresult(d);
   return 0;
}


void sendresult(OutputBuffer &d)
{
    d.data1 = 5;
    d.data2 = 10;
    //Here I need to Compress the object d.Is it possible to compress???
}

1 个答案:

答案 0 :(得分:2)

是的,是的。

我认为OP在树林深处,所以我认为这应该从开始:

  1. 查看serialization是什么。留意你在c ++中可用的最爱。可能需要查看几个选项。序列化您的对象。

  2. 然后您可以使用your favourite compression library/method。压缩从序列化中获得的字节串并将其置于线路上。

  3. 在客户端使用补充方法反转堆栈。

  4. 提供更具体的答案可能毫无用处。你需要做一部分工作。研究和做出选择。我相信,当您在特定步骤中遇到特定问题时,您将能够提出具体的技术问题并在此处获得更详细的帮助。