Qt——用Tcp传结构体

本文介绍了在Qt中如何通过Tcp进行结构体数据的传输。首先解决了单个结构体数据的传输问题,然后详细描述了在传输多个结构体数据时遇到的挑战,包括客户端的循环打包问题和服务端的接收问题。最终通过调整代码,成功实现了客户端向服务端连续发送多个结构体数据的功能。
摘要由CSDN通过智能技术生成

最近在写基于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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值