青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

網絡服務器軟件開發/中間件開發,關注ACE/ICE/boost

C++博客 首頁 新隨筆 聯系 聚合 管理
  152 Posts :: 3 Stories :: 172 Comments :: 0 Trackbacks

          四.結構體(message)

ProtobufMessage結構是由一系列的key-value對組成的。其中,key由兩部分組成,成員序號field_numbervalue的類型wire_type,他們通過(field_number << 3) | wire_type的方式編碼為一個varintvalue根據wire_type而定;

         Message結構由.proto文件定義,這是協議雙方的接口文件,文件里面定義了每個結構成員的序號即field_number,以及每個成員的類型(該類型會映射到wire_type),例如:

message MSG_Login_Rsp

 {

                required 1:uint32 rspcode = 100;//返回值,1為默認值

                required 2:string rspdesc = "success"; //success為默認值

}

     其中,rspcode的序號為1,類型為uint32,默認值為100rspdesc的序號為2,類型為string,默認值為success

     下面我們來看如何根據proto文件序列化結構體(proto文件的規則后續的文章中會說明,這里只是原理性的描述)。

     首先,需要做成員類型的劃分,如下:

                                 

Type

含義

使用場景

0

Varint

uint8,uint16,uint32

2

Length-delimited

String ,bytesembedded messages,repeated fields

        說明1)embedded message為結構體的嵌套類型

               2)repeated fields為某個可能重復的字段,重復次數可以為0

                   3Length-delimited的含義是“長度+值”,其中長度采用varint編碼,值為字符序列或者二進制碼流

                   4Type的含義就是前文提到的wire_type

            1)uint32為例,假若有如下proto接口

                     message Test1

                     {

                            required 1: uint32 a = 150;

                     }

    查看序列化的結果,可以得到16進制:

08 96 01

    由于uint32類型較為簡單,我們容易得出,key8,其中wire_type0field_number1value150

             2)以string字符串為例,假若有如下proto接口

                     message Test2

                     {

                            required 2: string msg = “testing”;

                     }

    此時如果序列化,我們回得到下面16進制碼流:

                     12 07 74 65 73 74 69 6e 67

    剛才已經提到message的編碼都是key-value對,OK,我們對號入座,由于key是一個varint,我們很容易斷定12就是key,將12轉化為二進制格式:0001 0010,得出:wire_type2field_number2,說明接下來會出現Length-delimited類型,根據“長度+值”的規則,推斷出7string的長度,string為“testing”。

            3)以結構體的嵌套(embedded message)為例,假若有如下proto接口

                     message  Test3

                     {

                            required 3: Test1;

                     }

    看序列化碼流:

                     1a 03 08 96 01

    參考上面string的情況,我們得到:key1a,其中wire_type2field_number3value的為 08 96 01,注意此時value本身是一個key-value對,這個對我們在1)中已經做了解析。

     

      下一篇文章會描述proto接口文件的規則(主要基于libprotobuf的規則,但又有簡化)

 

   

posted on 2009-09-11 19:35 true 閱讀(1851) 評論(0)  編輯 收藏 引用 所屬分類: 網絡服務器開發編碼知識通信技術
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99国产精品私拍| 亚洲一区二区综合| 久久亚洲捆绑美女| 久久不射网站| 久久久久久久综合| 亚洲每日更新| 一本久道久久综合婷婷鲸鱼| 亚洲国产黄色片| 欧美电影免费观看高清| 欧美高清在线播放| 亚洲乱码国产乱码精品精可以看 | 午夜精品视频| 午夜国产一区| 蜜乳av另类精品一区二区| 亚洲国产精品va在线观看黑人| 免费亚洲一区| 亚洲一区亚洲二区| 欧美伦理91| 激情五月婷婷综合| 亚洲欧美日韩在线高清直播| 另类成人小视频在线| 亚洲色图制服丝袜| 女人色偷偷aa久久天堂| 久久视频一区二区| 亚洲精品久久久久久久久久久久 | 亚洲女性裸体视频| 欧美日本一道本| 亚洲第一黄色网| 亚洲精选视频免费看| 久久久人成影片一区二区三区| 欧美v国产在线一区二区三区| 欧美高清不卡| 国产欧美在线观看| 亚洲美女黄网| 女人天堂亚洲aⅴ在线观看| 99视频一区二区| 久久久999精品| 国产精品日日做人人爱| 亚洲在线一区二区三区| 久久米奇亚洲| 欧美sm极限捆绑bd| 宅男噜噜噜66一区二区| 校园春色国产精品| 亚洲国产日韩在线| 99国产欧美久久久精品| 欧美视频在线免费| 久久九九全国免费精品观看| 久久精品72免费观看| 亚洲国产婷婷综合在线精品 | 性久久久久久久久久久久| 亚洲午夜av| 亚洲最新在线视频| 欧美成人精品1314www| 国产精品高清在线观看| 欧美午夜精品| 亚洲美女91| 欧美激情在线| 国产麻豆精品在线观看| 久久久91精品国产| 国产精品久久久91| 亚洲福利视频三区| 海角社区69精品视频| 一本一本久久a久久精品综合妖精| 国产精品综合| 久久久久久9999| 国产精品系列在线| 日韩网站在线观看| 中日韩高清电影网| 老司机午夜精品视频在线观看| 久久精品国产免费| 99热在这里有精品免费| 亚洲激情校园春色| 亚洲日韩中文字幕在线播放| 久久久综合网| 欧美肥婆bbw| 亚洲乱码久久| 一区二区三区产品免费精品久久75| 欧美日本一区二区三区| 欧美激情精品久久久| 在线免费不卡视频| 欧美日韩另类综合| 亚洲午夜精品17c| 午夜精品福利视频| 极品尤物av久久免费看| 久久福利一区| 亚洲高清资源综合久久精品| 亚洲精品一区二区三区婷婷月 | 亚洲韩国日本中文字幕| 亚洲一二三四区| 一本久久综合亚洲鲁鲁| 欧美一级淫片播放口| 欧美日韩国产亚洲一区| 欧美一级淫片aaaaaaa视频| 国产亚洲成年网址在线观看| 欧美高清在线观看| 欧美体内谢she精2性欧美| 亚洲日本成人| 欧美一区二区精品| 亚洲精品黄色| 欧美系列精品| 欧美成人精品在线播放| 欧美亚洲视频| 亚洲综合成人婷婷小说| 亚洲美女在线看| 亚洲国内欧美| 91久久亚洲| 最新成人av网站| 欧美激情精品久久久久久免费印度| 亚洲一区二区动漫| 亚洲一区二区三区视频| 亚洲精品中文字幕在线观看| 一区二区三区在线观看欧美| 老牛嫩草一区二区三区日本 | 欧美日韩国产色综合一二三四| 亚洲欧美激情视频在线观看一区二区三区| 麻豆精品在线视频| 麻豆精品91| 欧美成人精品一区二区三区| 欧美激情区在线播放| 欧美国产日韩精品| 日韩视频免费观看| 亚洲一区二区三区精品在线| 亚洲裸体俱乐部裸体舞表演av| 欧美成人一区在线| 亚洲九九九在线观看| 制服丝袜亚洲播放| 久久国产日韩| 欧美日韩一区二区视频在线观看| 欧美日韩一区二区视频在线| 国产九色精品成人porny| 裸体一区二区三区| 亚洲缚视频在线观看| 日韩网站在线| 久久综合九色综合欧美就去吻| 欧美经典一区二区三区| 国产精品久久久久久久久久久久久| 国产精品亚洲综合天堂夜夜| 亚洲国产专区| 欧美一区在线看| 99视频一区二区三区| 免费成人在线观看视频| 国产女精品视频网站免费| 最新国产成人av网站网址麻豆| 亚洲午夜久久久久久久久电影网| 久久久久.com| 一本高清dvd不卡在线观看| 欧美影院一区| 国产模特精品视频久久久久| 99精品欧美一区二区蜜桃免费| 久久中文字幕一区| 午夜欧美大尺度福利影院在线看| 女人色偷偷aa久久天堂| 亚洲国产精品久久久久久女王| 亚洲欧美日韩专区| 亚洲精品久久久久久久久久久久| 老鸭窝亚洲一区二区三区| 国内精品久久久久久 | 99精品国产在热久久婷婷| av不卡免费看| 久久综合给合久久狠狠色| 最新国产精品拍自在线播放| 亚洲综合日韩| 国产精品日韩欧美一区二区| 亚洲第一综合天堂另类专| 午夜视频精品| 一区二区日韩免费看| 欧美日韩在线高清| 欧美综合激情网| 欧美三级电影精品| 在线成人黄色| 日韩视频精品在线| 国产乱码精品一区二区三区不卡 | 亚洲毛片播放| 日韩天天综合| 在线精品亚洲| 99热免费精品在线观看| 国产欧美日韩高清| 欧美大片免费观看在线观看网站推荐| 蜜桃av噜噜一区二区三区| 中文有码久久| 欧美电影免费观看网站| 欧美在线免费| 欧美午夜精品久久久| 欧美承认网站| 国产视频久久久久久久| 亚洲免费激情| 日韩一级片网址| 免费黄网站欧美| 久久亚洲视频| 国产精品免费视频xxxx| 一区二区三区不卡视频在线观看 | 日韩午夜电影av| 美女视频网站黄色亚洲| 久久视频在线视频| 国产精品中文字幕在线观看| 亚洲视频在线观看免费| 在线视频精品一| 欧美日韩成人在线| 亚洲图片自拍偷拍| 久久精品国产一区二区三|