2014-01-28 87 views
-4

其實我正在開發一個開源搜索引擎項目,我需要通過搜索文本來發送客戶端的請求。關於C++中的輸出緩衝區壓縮

服務器(開源搜索引擎)已經找到搜索文本的結果,並給客戶端的響應....

所以我需要壓縮在服務器端的輸出緩衝並將其發送到客戶端。 例如(假設我正在搜索國家的文本列表並分配內存以僅顯示100個國家/地區

因此服務器找到前100個國家並從服務器向客戶端發送響應(按照行爲)。

所以當我找到國家list.will時會嘗試做什麼,將壓縮輸出緩衝區併發送儘可能多的響應給客戶端(因爲做這些事情,我們甚至可以發送200國家到客戶端顯示)......

客戶端將收到響應並解壓縮顯示)

這不是一個實際的代碼....他們使用這些類型的工藝生產的結果

我只是產生了最小的,完整的,經過測試和可讀例如

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

[關於C++中的對象變量壓縮?](http://stackoverflow.com/questions/21382030/regarding-object-variable-compression-in-c) –

+1

壓縮大多數數據當然是可能的:google會發現很多算法,以及許多實現它們的庫。你有具體的問題嗎? –

+0

請提出一個問題和一個問題去用它。 – voodooattack

回答

2

是的,這是。

我認爲OP是在叢林深處,所以這是什麼,我認爲他們應該開始:

  1. 檢查什麼serialization是。注意你可以在C++中使用的最愛。可能需要檢查幾個選項。序列化你的對象。您可以使用your favourite compression library/method。壓縮從序列化中獲得的字節串並將其放入網絡。

  2. 在客戶端使用互補方法反轉堆棧。

在給出更具體的答案時可能沒有用處。你需要做你的一部分工作。研究和做出選擇。我相信,當您在特定步驟中遇到特定問題時,您將能夠詢問具體的技術問題,並在此處獲得更詳細的幫助。

+0

明智的答案。好樣的! –

+0

@Daniel嗯,我覺得這更適合解決特定的技術問題。但我曾經是一個小菜鳥,有時候一般的暗示去哪裏都會有幫助。 OP甚至試圖給出一個代碼示例,我認爲這個努力至少應該試圖解決他們的問題。問題在於國際海事組織太寬泛的邊界。我也想給出更具體的答案=) – luk32

+0

謝謝luk32.will繼續,讓你知道 – user1087145