QT中TCP传递结构体,

   看了网上很多大神,有认识重载运算符把结构体中的内容一个一个进行传递的,比较麻烦,也有说的比较轻松的,完全不适合我这种小白看,完全不知所以。最后终于找到了解决的方法。下面是我学习到的的方法:

在客户端头文件中定义一个结构体:

typedef struct node
{   
char count[20];    
char passwd[20];    
char cmd[5];    
char cmd2[5];
}Node;

下面是发送的函数:

Node* stu_log = new Node;    
strcpy(stu_log->count,ui->lineEdit_count_2->text().toUtf8().data());    
strcpy(stu_log->passwd,ui->lineEdit_password_2->text().toUtf8().data());    
strcpy(stu_log->cmd2,"log");    
Tsocket->write((char*)stu_log,sizeof(Node));

stu_log是一个结构体指针,将lineEdit中的内容进行转码读取,复制给结构体中对应的变量,在write的时候第一个参数是char*类型的,进行强转,第二个参数是传递的结构体的大小。

下面是接受的部分,首先在服务器的头文件中定义一个一样的结构体,用来接收读取的结构体的内容,一样的结构体我就不写了,同上。

下面是接受的函数:

Node *str = new Node;                    
Tsocket->read((char*)str,sizeof(Node));

strl中就是你传过来的结构体了,你可以在服务器的头文件中定义一个list,头文件是#include <list>,在定义的时候要加上标准命名空间,std::list<Node> ls;      将你接收到的结构体进行保存。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值