QT中TCP傳遞結構體,

2021-09-25 20:33:36 字數 875 閱讀 7348

看了網上很多大神,有認識過載運算子把結構體中的內容乙個乙個進行傳遞的,比較麻煩,也有說的比較輕鬆的,完全不適合我這種小白看,完全不知所以。最後終於找到了解決的方法。下面是我學習到的的方法:

在客戶端標頭檔案中定義乙個結構體:

typedef struct node

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::listls;      將你接收到的結構體進行儲存。

Qt中如何通過tcp傳送結構體

前一段時間移植在想qt如何通過tcp傳送結構體,網上有人說可以通過如下方式 tcpsocket write char objecta,sizeof objecta tcpsocket read char objecta,sizeof objecta 但是我沒有成功,read有資料快取問題,所以讀過來...

Qt 訊號槽傳遞結構體引數

1 需要註冊結構體引數,在結構體中宣告結束的地方加上結構體註冊。typedef struct s exceptionnotifydata exceptionnotifydata q declare metatype exceptionnotifydata 2 訊號定義 signals void si...

Qt訊號槽傳遞自定義結構體

qt的訊號和槽可以傳遞int double等c 常用型別變數,也可以傳遞qvector qmap等qt的容器類 當然也可以傳遞qt定義的型別 那麼qt的訊號和槽如何傳遞自定義的結構體呢。首先在定義結構體的同時需要使用q declare metatype。通過這個巨集定義可以將自定義的型別註冊到qt的...