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

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

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

 在進行 <<協議設計>>系列之前,先寫點零碎的知識,做些鋪墊.

 Google的libprotobuf,已經很強大了,開始接觸的時候還是2.1版本,現在已經到了2.2了,新版最大的變化就是添加了libprotobuf-lite!,是libprotobuf的精簡版,更加的輕量級,非常適合我的口味。
 我比較推崇這個數據交換引擎,平時也在自己的代碼里面有過應用,比如做簡單的IM,文件傳輸等,都極為方便,看重的幾點好處如下(手冊中描述的好處就省了):
       1.提供接口描述語言(IDL),無論是做客戶端,還是做服務端,都在面向接口編程。而且IDL語法規則很簡單,和C的結構體語法類似。
       2.自動生成序列化及反序列化代碼,讓開發人員脫離了協議的細節,把更多的精力放到業務邏輯的編寫上

聽起來不錯,事實上也真不錯,不過還有幾個問題需要考慮:
    1.你的客戶端能帶上libprotobuf這個包嗎?
    2.你的客戶端如果只支持C語言,怎么辦?比如手機客戶端
    3.要讀懂libprotobuf的編碼原理,除了要有一定水平,還需要時間,其它項目成員能夠接受嗎?

     我身邊有朋友就碰到一種情況:一個手游項目,客戶端是C的,服務端c++的,而且客戶端和服務端是異地開發,如果從頭做起,需要先協商好每個消息的結構,開發時這里不可避免的要涉及消息的序列化及反序列化,如果挨個消息手動解析,工作量會很大,而且調試困難,容易出錯,可見一個像libprotobuf這樣提供IDL的工具是很有必要的。
    下面說一下,目前我的思路:
         1.libprotobuf是肯定不能用了
         2.為了便于雙方理解,要更多的采用常規協議設計方法
         3.一個小巧的IDL還是需要的,只需要自動完成序列化和反序列化即可
    舉個具體例子,假若有下面一個C的結構體:
       struct SLogin
        {
            uint32 nId_;//用戶ID
            string sPwd_;//密碼
            uint8  nStatus_;//登陸狀態
        };
    這里為了說明方便,使用了std::string,可以用char數組代替,或者用<ptr,len>形式代替。那么編碼的時候,常規方式就是uint32占用4個字節,uint8占用1個字節,都容易理解,這里不要用libprotobuf的varint。
    重點看一下string的編碼方式,其中string可以是ASCII字符串,也可以是二進制的數據塊。任何協議都遵循TLV結構,其中T為Type類型,L為Length長度,V為Value值,前面的uint32不用額外的TL是因為:(1)他是結構體的第一個成員,而第一個成員雙方約定是整形,確定了T,(2)uint32本身說明了長度為4個字節。同樣,由于雙方約定第二個結構體成員是string類型,所以只需要確定長度即可。那么長度字段本身是固定長度,還是變長的呢?如果長度固定,最少需要2個字節,該情況下,對于很短的字符串也是2個字節的長度,有些浪費。所以最好采取變長的長度,varint,每個字節的低7位是有效承載,最高位表示后面是否還有高字節出現。
    另外,針對上面這樣簡單結構體,最好用python腳本寫個小代碼生成工具,自動生成序列化及反序列化的代碼,應該不難。
    關于序列化,可以參考文本協議json做下對比,http://www.json.org/


posted on 2009-09-24 03:03 true 閱讀(4656) 評論(1)  編輯 收藏 引用 所屬分類: C++基礎編碼知識

Feedback

# re: C++結構體序列化的一點思考 2009-09-24 12:17 陳梓瀚(vczh)
以前嘗試做過一個,標記了你需要的所有類,它們的父類,他們的成員和函數之后,就算給一個base指針,也能判斷出是什么子類,然后正確序列化。當然這個一點都不輕量級,很重。  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免播放器亚洲一区| 亚洲网站在线播放| 国产精品乱码人人做人人爱| 免费成人黄色av| 欧美午夜精品久久久| 欧美高清在线观看| 国产精品一区二区久激情瑜伽| 免费成人高清| 国产一本一道久久香蕉| 91久久国产综合久久蜜月精品 | 亚洲一区二区三区午夜| 欧美一区二区三区久久精品茉莉花 | 亚洲一区日本| 亚洲视频网站在线观看| 另类激情亚洲| 嫩草影视亚洲| 伊人伊人伊人久久| 午夜免费在线观看精品视频| 新片速递亚洲合集欧美合集| 欧美日韩国产成人高清视频| 亚洲国产精品ⅴa在线观看| 国产欧美日韩一区二区三区在线观看 | 欧美在线资源| 亚洲欧美日韩一区二区三区在线观看| 欧美精品www| 欧美国产日韩视频| 亚洲国产婷婷| 麻豆国产精品777777在线| 久久精品免费电影| 极品日韩久久| 久久激情婷婷| 欧美黄色免费网站| 亚洲大片在线观看| 欧美成人一区二区| 91久久在线观看| 亚洲在线视频一区| 欧美午夜国产| 欧美一级理论片| 久久精品视频99| 狠狠久久综合婷婷不卡| 久久综合久久综合九色| 女人色偷偷aa久久天堂| 亚洲美女色禁图| 欧美久久一级| 亚洲在线观看视频| 久久久999| 亚洲电影第三页| 欧美午夜精品一区二区三区| aⅴ色国产欧美| 久久久不卡网国产精品一区| 激情综合色综合久久| 欧美不卡福利| 一区二区三区福利| 午夜精品区一区二区三| 在线看不卡av| 免费在线看成人av| 亚洲视频www| 久久久一区二区三区| 日韩午夜在线电影| 国产精品v欧美精品v日韩精品| 亚洲欧美激情在线视频| 美女视频黄免费的久久| av成人免费| 激情伊人五月天久久综合| 欧美韩日一区二区| 午夜亚洲性色视频| 欧美大片免费| 久久er99精品| 亚洲人午夜精品免费| 国产精品色网| 美女性感视频久久久| 野花国产精品入口| 欧美国产一区二区在线观看| 亚洲神马久久| 亚洲国产另类久久久精品极度| 欧美三级电影大全| 老司机免费视频久久| 亚洲午夜精品国产| 麻豆精品在线播放| 欧美一二区视频| 亚洲黄一区二区| 国产一区视频在线看| 欧美精品一区在线观看| 久热综合在线亚洲精品| 亚洲综合色丁香婷婷六月图片| 亚洲国产成人精品女人久久久 | 久久亚洲欧美| 一区二区三区在线看| 国产精品爽爽ⅴa在线观看| 99riav国产精品| 亚洲美女av网站| 久久国产精品久久久| 亚洲国产日韩在线一区模特| 国产在线视频欧美一区二区三区| 欧美成人在线网站| 免费日韩av| 久久精品成人欧美大片古装| 销魂美女一区二区三区视频在线| 亚洲激情成人| 久久成人资源| 亚洲欧美在线免费| 在线中文字幕日韩| 一本色道久久综合亚洲精品婷婷| 尤物yw午夜国产精品视频明星| 国产精品视频成人| 欧美激情一区二区三区| 久久久成人精品| 久久国产精品99国产精| 亚洲一区二区三区在线播放| 99热在线精品观看| 91久久精品一区| 欧美激情国产日韩| 久久午夜视频| 久久激情五月婷婷| 欧美一级在线视频| 亚洲资源av| 久久黄色影院| 欧美在线啊v一区| 欧美一区二区三区免费看| 亚洲免费网站| 久久久999精品视频| 久久爱另类一区二区小说| 亚洲视频在线视频| 欧美中文字幕| 久久久精品动漫| 欧美黄色影院| 亚洲国产成人精品久久| 99精品欧美一区二区蜜桃免费| 日韩亚洲在线| 香蕉成人久久| 久久久午夜视频| 欧美精品v国产精品v日韩精品| 欧美久久久久久久久| 国产精品普通话对白| 国产日韩一区二区| 精品999久久久| 亚洲精品视频在线| 国产乱码精品一区二区三区av| 伊人久久亚洲美女图片| 亚洲国产一区二区三区a毛片 | 亚洲激情偷拍| 亚洲手机成人高清视频| 午夜久久资源| 久久综合影视| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久夜色精品亚洲| 免费视频一区| 一区二区三区四区国产| 午夜精品久久| 欧美日韩免费区域视频在线观看| 欧美午夜一区二区三区免费大片| 黄色亚洲大片免费在线观看| 亚洲精品永久免费精品| 欧美在线视频免费观看| 亚洲大黄网站| 欧美一区二区三区视频免费| 欧美二区在线播放| 国产亚洲欧美一级| 夜夜嗨av一区二区三区中文字幕 | 亚洲视频你懂的| 欧美伊人久久久久久久久影院| 欧美人妖在线观看| 国产一区二区无遮挡| 一区二区三区四区五区精品| 久久精品亚洲一区| 亚洲三级免费| 久久精品在线播放| 国产精品国产三级国产专播精品人 | 亚洲激情网址| 夜夜嗨av色一区二区不卡| 久久国产福利国产秒拍| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲开发第一视频在线播放| 欧美一区视频| 亚洲黄色性网站| 久久久国产精品亚洲一区| 欧美精品国产精品日韩精品| 国内精品国语自产拍在线观看| 日韩一级黄色av| 亚洲欧洲一区二区在线播放| 欧美亚洲综合另类| 亚洲国产精品黑人久久久| 欧美在线精品一区| 国产精品毛片大码女人| 一区二区三区视频在线播放| 欧美成人高清视频| 久久免费国产| 国精产品99永久一区一区| 久久激情五月丁香伊人| 亚洲视频一区二区免费在线观看| 欧美日韩精品免费观看视频完整| 精品成人一区| 欧美成人蜜桃| 久久蜜桃香蕉精品一区二区三区| 国产日韩一区欧美| 午夜欧美大片免费观看| 一区二区三区视频观看| 欧美日韩不卡视频| 亚洲一区二区三区免费在线观看| 亚洲日韩欧美视频|