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

網絡服務器軟件開發/中間件開發,關注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>
            中文国产一区| 国产精品免费小视频| 国内精品久久久久影院薰衣草| 亚洲人人精品| 久久最新视频| 久久久久.com| 亚洲国产精品电影| 欧美日韩国产大片| 99这里只有久久精品视频| 亚洲主播在线| 国外成人性视频| 欧美日韩二区三区| 欧美日韩一区二区在线视频| 午夜欧美大片免费观看| 久久综合网络一区二区| 一区二区在线观看视频在线观看| 久久天堂国产精品| 中文日韩欧美| 免费中文日韩| 亚洲欧美日韩一区在线| 亚洲高清一区二| 夜夜嗨av色一区二区不卡| 国产日韩一区二区三区| 欧美国产免费| 欧美在线综合视频| 一个色综合导航| 欧美韩国在线| 久久嫩草精品久久久久| 午夜精品久久久| 亚洲另类一区二区| 国产亚洲制服色| 国产精品天天摸av网| 免费在线欧美黄色| 久久爱www.| 亚洲免费中文字幕| 亚洲伦伦在线| 亚洲免费精品| 亚洲激情一区二区三区| 免费在线国产精品| 欧美一级理论性理论a| 一区二区三区久久久| 亚洲无线观看| 亚洲午夜一二三区视频| 美女国产一区| 亚洲欧美日韩在线观看a三区| 亚洲在线播放| 亚洲欧美日韩精品久久久| 欧美国产三区| 亚洲国产另类 国产精品国产免费| 激情偷拍久久| 久久精品九九| 欧美成年人网| 久久精品人人爽| 久久尤物视频| 国内自拍视频一区二区三区| 午夜精品视频在线观看| 一区二区欧美在线| 欧美日韩中文字幕在线| 国产精品电影在线观看| 国产精品欧美在线| 亚洲少妇在线| 亚洲精品国产精品国自产在线| 久热这里只精品99re8久| 影音先锋久久精品| 一区二区免费看| 亚洲片国产一区一级在线观看| 欧美另类在线观看| 欧美日本成人| 一本到12不卡视频在线dvd| 亚洲国产高清在线| 日韩视频一区二区| 欧美久久久久| 亚洲女性喷水在线观看一区| 亚洲一区二区高清视频| 国产日韩欧美综合一区| 久久一区国产| 亚洲久久成人| 欧美日韩亚洲一区二| 亚洲午夜未删减在线观看| 99re8这里有精品热视频免费| 欧美视频观看一区| 欧美一区二区在线看| 欧美v日韩v国产v| 久久视频一区二区| 亚洲视频高清| 性亚洲最疯狂xxxx高清| 亚洲黄色视屏| 亚洲性感美女99在线| 欧美成人国产| 国产一区二区三区高清播放| 欧美成人精品h版在线观看| 欧美成人激情在线| 亚洲伊人观看| 久久久噜噜噜久久| 国产美女扒开尿口久久久| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲精品日产精品乱码不卡| 亚洲免费av片| 国内精品模特av私拍在线观看| 亚洲国产欧美日韩另类综合| 欧美在线观看网址综合| 91久久国产综合久久91精品网站| 99精品视频免费观看视频| 国产日产精品一区二区三区四区的观看方式 | 欧美在线视频播放| 一区二区精品在线| 狠狠做深爱婷婷久久综合一区| 亚洲国产导航| 国产日韩欧美精品一区| 亚洲精品一区二区三区99| 国际精品欧美精品| 亚洲视频 欧洲视频| 91久久黄色| 久久久国产成人精品| 亚洲欧美综合网| 欧美日韩国产综合新一区| 欧美不卡在线| 亚洲高清不卡一区| 欧美高清一区| 老司机aⅴ在线精品导航| 国产精品igao视频网网址不卡日韩| 亚洲人成网站在线观看播放| 亚洲女优在线| 亚洲午夜精品久久久久久app| 女人色偷偷aa久久天堂| 久久夜色精品国产| 国产综合精品一区| 性色av一区二区三区红粉影视| 亚洲在线视频| 国产精品videosex极品| 亚洲美女视频在线观看| 亚洲精品在线免费观看视频| 久久综合久久综合久久综合| 久久精品视频在线观看| 国产欧美日韩综合精品二区| 亚洲午夜av电影| 欧美一区视频在线| 国产一区二区在线观看免费| 久久国内精品视频| 蜜桃av综合| 亚洲人成艺术| 欧美日韩三级视频| 亚洲宅男天堂在线观看无病毒| 午夜一区二区三视频在线观看| 国产精品婷婷午夜在线观看| 欧美一区二区三区在线观看视频 | 久久不见久久见免费视频1| 国产精品扒开腿做爽爽爽软件| 99精品久久| 久久精品国产亚洲a| 国产麻豆精品视频| 久久精品99国产精品日本| 欧美成人精品在线视频| 欧美xx视频| 亚洲黄色一区| 亚洲视频精品| 国产欧美一区二区精品婷婷| 久久精品五月婷婷| 亚洲黄色av一区| 亚洲欧美中文在线视频| 国产精品自在在线| 久久久精品视频成人| 亚洲国产小视频在线观看| 亚洲字幕一区二区| 国内成人自拍视频| 欧美精品色综合| 欧美a级理论片| 99伊人成综合| 国产一区日韩欧美| 欧美精品久久天天躁| 亚洲欧美日韩精品久久久| 欧美激情一区二区三区在线| 亚洲欧美国产高清| 亚洲福利视频一区| 国产精品久久久久久久久久免费| 欧美亚洲午夜视频在线观看| 亚洲第一精品夜夜躁人人躁 | 午夜在线a亚洲v天堂网2018| 国外成人在线| 国产精品成人一区二区三区夜夜夜| 午夜精品久久久久久久99樱桃| 欧美chengren| 免费日韩一区二区| 老司机精品视频网站| 国产精品久久久久久久9999| 久久久精品国产免费观看同学 | 嫩草影视亚洲| 亚洲欧美亚洲| 99re成人精品视频| 欧美国产极速在线| 欧美一区二区三区久久精品| 亚洲精品乱码久久久久久久久| 久久精品欧洲| 亚洲欧美卡通另类91av | 国产精品99久久久久久人| 国内精品模特av私拍在线观看| 国产精品v一区二区三区 | 亚洲国产欧美一区二区三区久久| 国产精品白丝av嫩草影院| 欧美极品色图|