C++socket传输不同类型数据的四种⽅式
使⽤socket传输组织好的不同类型数据,有四种不同的⽅式(我知道的嘿嘿):
a. 结构体
b. Json序列化
c. 类对象
d. protobuf
下⾯逐⼀整理⼀下,⽅便以后进⾏项⽬开发。
1. 使⽤结构体
假设需要传送的结构体如下:
struct person
{
char name[20]; // 注意:CPU访问内存的时候,对访问地址有对齐的要求,⼀般为2的幂次⽅。所以,有的数据被填充,以满⾜对齐要求。
int age;
float high;
};
可在发送数据的地⽅对数据进⾏处理,将其转换成⼀个字符串进⾏传送,⽽在接受⽅定义相同的结构体对这个字符串进⾏解析即可。发送⽅代码:
char temp[100]; //传送的字符串
struct person p1; //声明⼀个需要传送的结构体
//以下是结构体的初始化信息
p1.age = 10;
p1.high = 1.80f;
strcpy(p1.name,"zhangsan",sizeof(p1.name));
memset(temp,0,sizeof(temp)); // 对该内存段进⾏清
memset结构体初始化memcpy(temp,&p1,sizeof(person)); // 把这个结构体中的信息从内存中读⼊到字符串temp中
//接下来传送temp这个字符串就可以了
send(sock,temp,sizeof(person),0);
或者
struct person p1; //声明⼀个需要传送的结构体
p1.age = 10;
p1.high = 1.80f;
strcpy(p1.name,"zhangsan",sizeof(p1.name));
send(sock,(char*)&p1,sizeof(person),0);
接收⽅代码:
同样需要定义字符串和相同的结构体对象
char temp[100];
struct person p2;
memset(temp, 0, sizeof(temp));
recv(clientSocket, temp, 101, 0);
memcpy(&p2,temp,sizeof(person));
//或者
recv(clientSocket, (char*)&p2, sizeof(person),0);
2. 使⽤Json序列化
有时间写
3. 使⽤类对象
有时间写
4. protobuf
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论