c++客户端,go服务器数据包通信,不知道的还有没有好点的办法
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}
*/
...全文
相关推荐
UDP数据包接收(客户端)
本代码详细解释了UDP数据包接收、创建过程,运行过程中,需要与另外一台电脑处在同一个网段中,形成一个服务器-客户端模式进行通信
RabbitMq C++客户端的使用
RabbitMQ 是一款功能强大、成熟稳定的消息队列,适合对可靠性和灵活性要求较高的中小型项目。如果需要处理海量数据或追求极致性能,可考虑 Kafka 或 RocketMQ 等其他方案。
发送和接收TCP数据包的客户端和服务器
内含工程文件,客户端和服务器端exe文件,流程图。 注意,vs2017一下版本需要手动导入代码。
C++基于TCP/IP客户端、服务器通信实例
是一个TCP 简单的客户/服务器通信程序实例,是面向连接的TCP协议。客户端在向服务端发出请求后接受并显示服务端的数据,并且给服务端也发送数据。
基于C++的多客户端socket通信
描述: 1 采用C++语言 2 编译环境是code::blocks 3 使用的是非阻塞套接字 功能描述: 1 一个服务器对多个客户端之间进行通信 2 实现多线程开发,共包括接收数据线程、发送数据线程、主线程、接收客户端连接线程、清理资源线程。 其中主线程负责数据的输入,清理资源线程主要负责清理不需要的内存空间。 3 可以定向的向某个连接的客户端进行通信、同时也可以使用广播的方式向单个客户端发送数据


