• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            試用google Protocol Buffers( 比xml快20~100倍, 支持序列化數據 )

            使用指南可以看這篇文章介紹:
            http://www.shnenglu.com/liquidx/

            下載Protocol Buffers:
            http://code.google.com/p/protobuf/downloads/list

            vc環境下使用則在解壓縮文件中有一個vsprojects文件夾, 使用vs來編譯出libprotobuf.liblibprotoc.lib
            設置你的擴展頭文件包含目錄為 "D:\protobuf-2.1.0\src"

            按照指南, 首先我們定義一個test.proto文件內容如下:

            package Test;

            message Person {
                    required string name = 1;
                    required int32 id = 2;
                    optional string email = 3;
            }



            然后用protoc編譯器編譯出c++模塊, 這里有一個已經編譯好的編譯器, 你也可以從壓縮包中的源代碼編譯出該編譯器.
            http://protobuf.googlecode.com/files/protoc-2.1.0-win32.zip

            用這個指令編譯
            protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/test.proto
            然后我們得到了
            test.pb.h
            test.pb.cc
            2
            c++文件

            現在我們可以在項目中使用它了:

            #include <iostream>
            #include "test.pb.h"
            #include <fstream>

            #pragma comment( lib, "libprotobuf.lib" )
            #pragma comment( lib, "libprotoc.lib" )

            int _tmain(int argc, _TCHAR* argv[])
            {
                // Verify that the version of the library that we linked against is
                // compatible with the version of the headers we compiled against.
                GOOGLE_PROTOBUF_VERIFY_VERSION;

                // 設置數據, 并序列化到文件
                Test::Person person;
                person.set_id( 123 );
                person.set_name( "liquidx" );
                person.set_email( "liquidx@163.com" );

                std::fstream out( "person.pb", std::ios::out | std::ios::binary | std::ios::trunc );
                person.SerializeToOstream( &out );
                out.close();

                // 從文件中讀取數據, 并且反序列化
                Test::Person person1;
                std::fstream in( "person.pb", std::ios::in | std::ios::binary );
                if ( !person1.ParseFromIstream( &in ) ) {
                  std::cerr << "Failed to parse person.pb." << std::endl;
                  exit(1);
                }

                std::cout << "ID: " << person1.id() << std::endl;
                std::cout << "name: " << person1.name() << std::endl;
                if ( person1.has_email() ) {
                  std::cout << "e-mail: " << person1.email() << std::endl;
                }

                // Optional:  Delete all global objects allocated by libprotobuf.
                google::protobuf::ShutdownProtobufLibrary();

                getchar();
                return 0;
            }



            輸出:
            ID : 123
            name : liquidx
            e-mail :
            liquidx@163.com

            產生的person.pb內容如下(28字節):
            liquidx{liquidx@163.com

            試用完畢:
            感覺Protocol Buffers挺好用的, 項目的某些xml部分可以使用它來替代,這樣在數據讀取和操作上比xml更加方便直接, 且效率高效
            !
            用它也可以在網絡處理上得到一些好處!

             

            posted on 2009-06-23 21:08 肥仔 閱讀(1293) 評論(2)  編輯 收藏 引用 所屬分類: 網絡編程

            評論

            # re: 試用google Protocol Buffers( 比xml快20~100倍, 支持序列化數據 )  回復  更多評論   

            不錯 好東西啊
            2009-07-06 10:46 | 凡客誠品

            # re: 試用google Protocol Buffers( 比xml快20~100倍, 支持序列化數據 )  回復  更多評論   

            我們的網頁游戲就用這個協議
            2012-10-18 17:28 | aaa
            久久99精品国产麻豆蜜芽| 国产国产成人精品久久| 亚洲中文字幕伊人久久无码| 亚洲国产精品综合久久一线| 欧美黑人又粗又大久久久| 2021国产成人精品久久| 久久99久久99精品免视看动漫| 精品亚洲综合久久中文字幕| 久久精品久久久久观看99水蜜桃 | 久久午夜免费视频| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 色欲综合久久躁天天躁蜜桃| 国产精品成人久久久久三级午夜电影| 欧美亚洲另类久久综合婷婷| 久久久久久a亚洲欧洲aⅴ| 无码AV中文字幕久久专区| 一本一道久久精品综合| 国产aⅴ激情无码久久| 日本欧美国产精品第一页久久| 久久这里只有精品首页| 久久精品无码专区免费青青| 偷窥少妇久久久久久久久| 亚洲欧美国产精品专区久久| 久久精品国产清自在天天线| 久久久久久狠狠丁香| 99久久99久久精品免费看蜜桃| 久久精品国产精品亚洲精品| 久久久久久国产a免费观看黄色大片 | 久久精品国产亚洲av高清漫画| 亚洲乱码精品久久久久..| 久久久国产视频| 久久福利资源国产精品999| 亚洲国产精品无码久久九九| 午夜精品久久久内射近拍高清 | 久久艹国产| 要久久爱在线免费观看| 久久久久久青草大香综合精品| 久久综合九色欧美综合狠狠| 亚洲欧美日韩精品久久亚洲区 | 色婷婷狠狠久久综合五月| 亚洲欧美日韩精品久久亚洲区 |