最近在写基于4412开发板设计的智能饮料工控系统,从客户端传数据到服务端的时候,遇到了瓶颈,而后在博客上找了好久,结合自己的修改,最终成功~
Linux里的Qt版本是4.8.6,所以不能用QJson传,后来加了第三方库就可以传了,但这里写怎么传结构体数据。
**将结构体数据通过TCP里的socket传到服务端的编写过程。**
问题①:先传一个数据——解决!
解析:将QLabel里的数据,用一个变量拿出来。
然后结构体定义一个变量,然后把之前的数据放在结构体里,再将结构体打包转换成字符数组
<字符数组不能用QString类型的,只能用char*类型的,因为用QString传过去的代码是乱码。>
用memcpy传过去,后面上代码。
客户端:
//头文件的结构体:
struct Data
{
int drinkid ;//用户号
int drinknum;//饮料数量
};
//cpp文件的发送数据的函数里:
QString d1=dlabel1->text();
int dd1=d1.toInt();
struct Data n_data;
n_data.drinkid=1;
n_data.drinknum=dd1;
QByteArray m_data;
m_data.resize(sizeof(struct Data));
memcpy(m_data.data(),&n_data,sizeof(struct Data));//将结构体拷贝到字符数组
//获取数据的大小,查看一下传过去的数据大小是多少
int* data_len