protobuf類進行巢狀時,協議描述如下:
/* 客戶端拉取訊息請求包 */
message secret_get_req
/* 訊息請求包封裝 */
message secret_msg_req
1、進行打包時的操作如下:
secret_get_req stgetreq;
stgetreq.set_version(1);
secret_msg_req *pmsgreq = stgetreq.add_msg_req_list();
pmsgreq->set_userid("userid");
pmsgreq->set_msg_beg(123);
pmsgreq->set_msg_end(467);
2、對巢狀類進行解包時的操作如下:
secret_get_req cgetreq;
string strbody;
char *pbody = (char *)p_data;
uslength - 2 - sizeof(secmsghead));
//這裡進行反序列化
cgetreq.parsefromstring(strbody);
uint32_t version = cgetreq.version();
uint32_t ulsize = cgetreq.msg_req_list_size();
secret_msg_req stmsgreq = cgetreq.msg_req_list(0);
printf( "userid1 = %s\n",stmsgreq.userid().c_str());
printf ("beg1 = %u\n", stmsgreq.msg_beg());
printf( "end1 = %u\n", stmsgreq.msg_end());
stmsgreq = cgetreq.msg_req_list(1);
printf( "userid2 = %s\n",stmsgreq.userid().c_str());
printf("beg2 = %u\n", stmsgreq.msg_beg());
printf( "end2 = %u\n", stmsgreq.msg_end());
(六)ProtoBuf訊息巢狀
我們在各種語言開發中類的定義是可以互相巢狀的,也可以使用其他類作為自己的成員屬性型別。在protobuf中同樣支援訊息巢狀,可以在乙個訊息中巢狀另外乙個訊息,字段型別可以是另外乙個訊息型別。定義result訊息 message result 定義searchresponse訊息 message se...
protobuf 中的巢狀訊息的使用
protobuf的簡單的使用,不過還留下了乙個問題,那就是之前主要介紹的都是對簡單資料的賦值,簡單資料直接採用set xx 即可,但是如果不是簡單變數而是自定義的復合型別變數,就沒有簡單的set函式呼叫了,下面看乙個簡單的例子。在網路遊戲中,遊戲玩家之間的同步是乙個最基本的功能,而同步是通過對座標的...
String類操作例項
class stringdemo trim的實現。去除字串兩端的空格。思路 1,字串每乙個字元都有自己的角標。可以定義兩個索引變數,判斷開始索引位的字元是否是空格,如果是就繼續向下判斷。開始索引在自增。同理,判斷結束索引位的字元是否是空格,如果是就繼續向前判斷。並結束索引自減。public stri...