使用protobuf傳遞網絡消息

一、獲取protobuf及相關依賴c++

新建install_protobuf.bat腳本,粘貼如下代碼git

::參考文章 https://github.com/google/protobuf/blob/master/cmake/README.md
::默認當前操做系統已安裝 git 和 cmake,並配置好了環境變量
echo off & color 0A

::設置所須要的Protobuf版本,最新版本能夠在github上查到 https://github.com/google/protobuf
set PROTOBUF_VESION="v3.3.0"
echo %PROTOBUF_VESION%
set PROTOBUF_PATH="protobuf_%PROTOBUF_VESION%"
echo %PROTOBUF_PATH%

::從githug上拉取protobuf源代碼
git clone -b %PROTOBUF_VESION% https://github.com/google/protobuf.git %PROTOBUF_PATH%

::從github上拉取gmock
cd %PROTOBUF_PATH%
git clone -b release-1.7.0 https://github.com/google/googlemock.git gmock

::從github上拉取gtest
cd gmock
git clone -b release-1.7.0 https://github.com/google/googletest.git gtest

pause

二、編譯github

新建build_protobuf.bat腳本,粘貼如下代碼服務器

::參考文章 https://github.com/google/protobuf/blob/master/cmake/README.md
::默認當前操做系統已安裝 git 和 cmake,並配置好了環境變量
echo off & color 0A

::設置所須要的Protobuf版本,最新版本能夠在github上查到 https://github.com/google/protobuf
::必須與下載的版本一致
set PROTOBUF_VESION="v3.3.0"
echo %PROTOBUF_VESION%
set PROTOBUF_PATH="protobuf_%PROTOBUF_VESION%"
echo %PROTOBUF_PATH%
cd %PROTOBUF_PATH%

::設置VS工具集,至關於指定VS版本,取決於VS的安裝路徑
set VS_DEV_CMD="D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat"
::設置工程文件夾名字,用來區分不一樣的VS版本
set BUILD_PATH="build_vs2013"
::設置編譯版本 Debug Or Release
set MODE="Release"

cd cmake
if not exist %BUILD_PATH% md %BUILD_PATH%

cd %BUILD_PATH%
if not exist %MODE% md %MODE%
cd %MODE%

::開始構建和編譯
call %VS_DEV_CMD%
cmake ../../ -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%MODE%
call extract_includes.bat
nmake /f Makefile

echo %cd%
pause

編譯完成,咱們獲得protobuf可執行文件工具

三、下面咱們來編寫protoui

// 指定語法規則 proto2 or proto3,不寫的話會有警告,默認使用proto2語法規則
syntax = "proto2";

enum MSGID_XXXSERVER // 定義消息ID
{
    MSGID_CS_REQ_Login = 0x0100;
    MSGID_CS_RESP_Login = 0x0200;
    MSGID_CS_NOTI_Login = 0x0300;
}

message LoginReq // 登陸請求
{
   optional int32 roleID = 1;
    optional string usrName = 2;
    optional int32 passWd = 3;
}

message LoginResp // 登陸響應
{
     optional int32 roleID = 1;
     optional int32 errCode = 2;
   optional RoleInfo roleInfo = 3;
}

message LoginNoti //登陸通知
{
    optional int32 roleID = 1;
    optional RoleInfo roleInfo = 2; 
}
message RoleInfo
// 角色信息 {   optional int32 roleID = 1;   optional string name = 2;   optional int32 age = 3;   optional int32 sex = 4; }

四、根據proto生成c++代碼google

新建gen.bat腳本,粘貼如下代碼spa

@echo off & color 0A

:: protoc程序名
set "PROTOC_EXE=protobuf_v3.3.0\cmake\build_vs2013\Release\protoc.exe"
:: .proto文件名
set "PROTOC_FILE_NAME=test.proto"

set "PROTOC_PATH=%cd%"
set "CPP_OUT_PATH=%cd%"

::生成.h和.cc
"%PROTOC_PATH%\%PROTOC_EXE%" --proto_path="%PROTOC_PATH%" --cpp_out="%CPP_OUT_PATH%" "%PROTOC_PATH%\%PROTOC_FILE_NAME%"
pause

咱們獲得下面兩個c++文件操作系統

五、定義消息管理類,根據MSGID分發消息code

六、如客戶端服務器使用不一樣語言,能夠生成相應語言的protobuf

相關文章
相關標籤/搜索