Socket编程时传输多种类型数据
#include <iostream>
using namespace std;
typedef struct
{
int ioType;
char str[20];
}ReDate;
void serializeStruct(const ReDate* date, char** buffer, size_t* size) {
*size = sizeof(ReDate);
*buffer = (char *)malloc(*size);
if (*buffer == NULL) {
printf("内存分配失败\n");
return;
}
memcpy(*buffer, date, *size);
}
// 从数据流中反序列化为结构体
void deserializeStruct(ReDate* date, const char* buffer, size_t size) {
memcpy(date, buffer, size);
}
int main()
{
ReDate date = { 1,"19090" };
char* buffer;
size_t size;
serializeStruct(&date, &buffer, &size);
// 清空结构体对象
ReDate newDate = { 0 };
// 反序列化结构体
deserializeStruct(&newDate, buffer, size);
// 输出反序列化后的结构体内容
cout << "ioType:" << newDate.ioType<<endl;
cout << "str: " << newDate.str<<endl;
// 释放内存
free(buffer);
return 0;
}
流程如下:
服务端:
1.创建一个结构体 将需要通过socket发送的数据定义在结构体中
2.对结构体进行序列化,拿到序列化指针
3.传输
客户端:
1.创建相同的结构体
2.接收到的数据进行反序列化
3.取值使用