ZinxDataPack打包方式

2022-05-06 23:12:08 字數 1773 閱讀 7446

進行自定義打包

指定頭接著讀取位元組數

znet

|--message.go

|--data_pack.go

package znet

type message struct

//建立乙個message訊息包

func newmsgpackage(id uint32, data byte) *message

}//獲取訊息資料段長度

func (msg *message) getdatalen() uint32

//獲取訊息id

func (msg *message) getmsgid() uint32

//獲取訊息內容

func (msg *message) getdata() byte

//設定訊息資料段長度

func (msg *message) setdatalen(len uint32)

//設計訊息id

func (msg *message) setmsgid(msgid uint32)

//設計訊息內容

func (msg *message) setdata(data byte)

package znet

import (

"bytes"

"encoding/binary"

)//封包拆包類例項,暫時不需要成員

type datapack struct{}

//封包拆包例項初始化方法

func newdatapack() *datapack

}//獲取包頭長度方法

func (dp *datapack) getheadlen() uint32

//封包方法(壓縮資料)

func (dp *datapack) pack(msg *message) (byte, error) )

//寫datalen

if err := binary.write(databuff, binary.littleendian, msg.getdatalen()); err != nil

//寫msgid

if err := binary.write(databuff, binary.littleendian, msg.getmsgid()); err != nil

//寫data資料

if err := binary.write(databuff, binary.littleendian, msg.getdata()); err != nil

return databuff.bytes(), nil

}//拆包方法(解壓資料)

func (dp *datapack) unpack(binarydata byte) (*message, error)

//讀datalen

if err := binary.read(databuff, binary.littleendian, &msg.datalen); err != nil

//讀msgid

if err := binary.read(databuff, binary.littleendian, &msg.id); err != nil

//這裡只需要把head的資料拆包出來就可以了,然後再通過head的長度,再從conn讀取一次資料

return msg, nil

}

zinx框架

SOLIDWORKS工程檔案快速打包的方法

在我們完成某個專案之後,我們的相關資料夾中往往會有很多專案相關檔案 solidworks零件 solidworks裝配體 solidworks工程圖 參考 設計表 設計活頁夾內容 貼圖 外觀及布景以及 solidworks simulation 結果等 但是對於專案來說,並不是所有的檔案都是有用的,...

1 Webservice打包成 aar檔案方式

webservice打包成.aar檔案方式 在windows控制台中進入class檔案所在目錄 例如我的本地目錄是 e myeclipseworkspace webserviceprpall webserviceprpall web inf classes 輸入如下的命令生成.aar檔案 實際上,j...

Spring Boot 打包與熱部署的操作方法

熱部署 spring boot提供了devtool。直接在pom.xml檔案中新增配置。1.新增依賴 org.springframework.boot spring boot devtools 2.在m en外掛程式依賴中新增 www.cppcns.comlt groupid org.springf...