实际上我正在开发一个开源搜索引擎项目,我需要通过搜索文本来发送客户请求。
服务器(开源搜索引擎)必须找到搜索文本的结果并给客户回复....
所以我需要压缩服务器端的输出缓冲区并将其发送到客户端。 例如(假设我正在搜索国家/地区的文本列表并分配内存以仅显示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???
}
答案 0 :(得分:2)
是的,是的。
我认为OP在树林深处,所以我认为这应该从开始:
查看serialization是什么。留意你在c ++中可用的最爱。可能需要查看几个选项。序列化您的对象。
然后您可以使用your favourite compression library/method。压缩从序列化中获得的字节串并将其置于线路上。
在客户端使用补充方法反转堆栈。
提供更具体的答案可能毫无用处。你需要做一部分工作。研究和做出选择。我相信,当您在特定步骤中遇到特定问题时,您将能够提出具体的技术问题并在此处获得更详细的帮助。