QT多執行緒伺服器Tcp

2021-10-05 07:33:25 字數 2188 閱讀 3759

最近寫乙個專案用到了伺服器開啟多執行緒,閱部落格無數,奈何沒有理解精髓,致晚上夢見自己寫出來了。次日,奮筆疾書,埋頭苦學,最後終於寫出來了。現在總結一下。

伺服器多執行緒需要用到: qtcpserver qtcpsocket qthread

qtcpserver 最主要的乙個incomingconnection虛函式的重寫

當qtcpserver監聽到乙個可用的連線時,會有乙個socket descriptor 。

也就是說服務端監聽到乙個連線,就會有乙個唯一的描述標識,依據這個標識會建立乙個qtcpsocket。

qtcpsocket

myclient.h

#ifndef myclicent_h

#define myclicent_h

#include #include class myclicent : public qtcpsocket

;#endif // myclicent_h

myclient.cpp

//處理收發,監聽等

#include "myclicent.h"

#include #include #include myclicent::myclicent(qintptr socketdesc,qobject *parent) : qtcpsocket(parent)

void myclicent::on_connected()

;#endif // myserver_h

myserver.cpp

#include "myserver.h"

#include myserver::myserver(qobject *parent) : qtcpserver(parent)

void myserver::incomingconnection(qintptr socketdescriptor)

); connect(thread, &mythread::finished, &mythread::deletelater);

thread->start();

}

mythread.h

#include "myserver.h"

#include myserver::myserver(qobject *parent) : qtcpserver(parent)

void myserver::incomingconnection(qintptr socketdescriptor)

); connect(thread, &mythread::finished, &mythread::deletelater);

thread->start();

}

mythread.cpp

#include "mythread.h"

mythread::mythread(qintptr socketdesc,qobject *parent) : qthread(parent)

void mythread::run()

widget.h

#ifndef widget_h

#define widget_h

#include #include #include #include #include "myserver.h"

namespace ui

class widget : public qwidget

;#endif // widget_h

widget.cpp

//伺服器的步驟和函式

//1.建立套接字 2.監聽listen(qhostaddress,888) 3.建立連線newconnection

5.建立連線不斷監聽readyread

array = tcpsocket->readall();

//參考連線:

//#include "widget.h"

#include "ui_widget.h"

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

widget::~widget()

關於QT實現多執行緒伺服器

最近實習在做乙個智慧型專案,要求在cotex a8的linux上用qt實現乙個小型伺服器,該伺服器有以下功能 1 檢測串列埠傳輸過來的資料,儲存下來,再通過網路傳送到pc機 2 監測pc機向伺服器傳送的資料,再傳送給串列埠 好吧。串列埠再發給zigbee,為什麼節點不直接用wifi啊 我的天!3 使...

執行緒TCP伺服器

include include include include include include include include define portnumber 3333 void read msg void arg void write msg void arg int main int arg...

多執行緒TCP程式伺服器端

多執行緒tcp程式伺服器端 1.建立serversocket物件,指定監聽的埠號。2.把accept 方法作為迴圈條件,迴圈監聽客戶端請求。3.建立執行緒類,定義乙個socket型別的成員變數,並定義乙個可以為他賦值的建構函式方法。4.在run 方法中使用socket變數進行任意的通訊操作。5.在主...