2,190
社区成员
发帖
与我相关
我的任务
分享
package main
/*
假设客户端是c++写的
客户端发送了一个如下结构的数据
#pragma pack(push, 1)
typedef struct {
uint16_t size;
uint16_t msgtype;
uint32_t sequnce;
uint8_t data1[3];
uint32_t data2;
uint16_t data3;
} mydata;
#pragma pack(pop)
*/
import (
"bytes"
"encoding/binary"
"fmt"
)
type myinfo struct {
Size, Msytype uint16
Sequence uint32
Data1 [3]uint8
Data2 uint32
Data3 uint16
}
func main() {
var mydata myinfo
mydata.Size = 1
mydata.Msytype = 2
mydata.Sequence = 3
mydata.Data1[0] = 4
mydata.Data1[1] = 5
mydata.Data1[2] = 6
mydata.Data2 = 7
mydata.Data3 = 8
//1、模拟网络数据流
netbuf := new(bytes.Buffer)
binary.Write(netbuf, binary.LittleEndian, mydata)
fmt.Printf("模拟的网络流数据流 长度:%d 数据:%v\n", netbuf.Len(), netbuf.Bytes())
//2、解析网络数据流
var rev_data myinfo
err := binary.Read(bytes.NewReader(netbuf.Bytes()), binary.LittleEndian, &rev_data)
if err != nil {
fmt.Println(err.Error())
}
}
/*
模拟的网络流数据流 长度:17 数据:[1 0 2 0 3 0 0 0 4 5 6 7 0 0 0 8 0]
解析网络数据:{1 2 3 [4 5 6] 7 8}
解析网络数据:{1 2 3 040506 7 8}
*/