Windows Mobile下使用ZLIB壓縮

來源:互聯網
上載者:User

前言:
    在當前手機應用中,可能壓縮技術不太引起重視,但是我們可以注意到一點,當手機與伺服器進行通訊的時候,速度與穩定性是非常重要,在這一環節中,我們如果把原檔案(或者原內容)直接發送到伺服器,不僅耗費不少流量(在當前流量費不便宜的情況下,這種情況能避免就盡量避免),而且傳輸的速度慢,消耗的時間長,也有可能產生傳輸不完整等一系列缺點。所以如果我們採用壓縮技術,把要傳輸到伺服器的內容進行壓縮,可以減少傳輸資料量,減少傳輸時間,提高資料的穩定性,何樂不為!

 

文章介紹:
    採用ZLIB開源進行資料的壓縮,比較壓縮後內容的大小及傳輸的時間多少,暫時忽略終端與伺服器端壓縮與解壓縮消耗的時間。

測試平台:
     VS 2005 + WM 6.0 

開發語言:
     C ++

本文:
    1. 下載ZLIB包:http://www.tenik.co.jp/~adachi/wince/zlibce/index.html。選擇第三項zlib for WindowsCE Ver.1.1.4(with binaries)。
    2. 下載到本地後解開,在zlibce目錄下,有標頭檔zconf.h和zlib.h;在zlibce\WCE400\ARMV4I下有庫檔案 zlibce.lib。
    3. 在VS2005下建立一個智慧型裝置項目,設為對話方塊工程。
    4. 把第2步說到的標頭檔與庫檔案複製到工程檔案夾中並且在項目中添加以上檔案。
    5. 在對話方塊標頭檔上添加以下代碼,把庫檔案與標頭檔載入項目中:
       #include "zlib.h" 
       #pragma comment(lib , "zlibce.lib")
    6. 把一個文字檔,例如test.txt複製到測試手機的My Documents目錄下,當前測試的test.txt檔案大小為92.8K。
    7. 在OnInitDialog函數中添加以下代碼:
       讀取檔案:

int nLen;  char *pBuf;  CFile cf;  cf.Open(L"\\My Documents\\test.txt", CFile::modeRead);  nLen = cf.GetLength();  pBuf = new char[nLen];  cf.Read(pBuf, nLen); 

壓縮:

gzFile zipFile = gzopen("\\My Documents\\test.gz", "wb");  gzwrite(zipFile, (voidp)pBuf, nLen);  gzclose(zipFile);

 8. 啟動調試

 

總結:
    壓縮前文字檔為92.8K,壓縮後檔案為15.3K,可見壓縮比例是接近1:6,通過發送到伺服器的時間作一個比較,壓縮前發送到伺服器消耗時間為33285MS,壓縮後發送到服務消耗時間為7214MS,可見發送的時間也大大縮小,有利於我們建立高速穩定的通訊環境。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.