Qt下實現執行緒中的TCP伺服器

2021-09-12 15:03:43 字數 995 閱讀 2742

tcp伺服器的**實現比udp略為複雜一點,因為tcp的服務端需要生成與管理乙個額外的qtcpserver物件。為了支援多執行緒,用movetothread方法把伺服器放在乙個單獨的執行緒中。

用mytcpserver類實現tcpserver,供主程式呼叫方法。

mytcpserver類標頭檔案內容如下:

# include #include #include #include #include class mytcpserver : public qobject

mytcpserver類的原始檔如下:

mytcpserver::mytcpserver(qobject *parent) : qobject(parent)

this->movetothread(m_thread);

m_tcpserver->movetothread(m_thread);

m_thread->start();

}mytcpserver::~mytcpserver()

void mytcpserver::onnewconnection()

//讀取info,傳送給類外的接收槽處理

void mytcpserver::socketreaddata()

m_buffer = m_socket->readall();

tmpdata.clear();

tmpdata = m_buffer.left(20);

m_buffer.remove(0, 20);

emit dataarrive(tmpdata);

}void mytcpserver::socketdisconnect()

文中的tcp伺服器業務邏輯很簡單,監聽埠號6000,每收到資料取頭20個位元組並傳送,複雜的邏輯可以改寫socketreaddata函式。

在工程的pro檔案中不要忘記把network模組加入進來。

QT多執行緒伺服器Tcp

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

執行緒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併發伺服器

對伺服器來說,以執行緒為客戶服務的方式有三種 1.每來乙個客戶就為其建立乙個執行緒 3.建立乙個執行緒池,在main中accept 對於第一種 int main int argc,char const argv return 0 void doit void arg 對於第二種 typedef st...