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 ,在定义的时候要加上标准命名空间,std::list ls;      将你接收到的结构体进行保存。

 

你可能感兴趣的:(日记)