c++客户端,go服务器数据包通信,不知道的还有没有好点的办法

我看你有戏 2017-02-23 11:29:57

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}
*/

...全文
409 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
十一文 2017-02-23
  • 打赏
  • 举报
回复
做成服务rpc啊 grpc

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧