日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT 线程池 + TCP 小试(三)实现最终功能

發(fā)布時(shí)間:2025/3/15 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT 线程池 + TCP 小试(三)实现最终功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


*免分資源鏈接點(diǎn)擊打開鏈接http://download.csdn.net/detail/goldenhawking/4492378

????? 有了TCP、線程池,我們就可以把他們連接起來。使用最簡(jiǎn)單的 QMainWindow吧,設(shè)計(jì)個(gè)UI,而后,創(chuàng)建我們的線程池、Service,并把TcpService 的數(shù)據(jù)接收信號(hào)與線程池的數(shù)據(jù)處理信號(hào)連接起來。

????? 為了模擬處理任務(wù),我們簡(jiǎn)單的設(shè)計(jì)一個(gè)轉(zhuǎn)換大小寫字符的函數(shù)作為處理過程的模擬,這樣有利于在超級(jí)終端調(diào)試、模擬。

#ifndef MYTASKITEM_H #define MYTASKITEM_H#include "qghthreadtaskitem.h"class MyTaskItem : public QGHThreadTaskItem {Q_OBJECTpublic:MyTaskItem(QObject *parent);~MyTaskItem();public:virtual void run(QObject * task_source, const QByteArray & data_array);signals:void evt_SendData(QObject * objClient,const QByteArray & dtarray); };#endif // MYTASKITEM_H
上述的類中的信號(hào)用來把處理結(jié)果發(fā)回生產(chǎn)者(也可以是別的消費(fèi)者,取決于信號(hào)的連接)

void MyTaskItem::run(QObject * task_source, const QByteArray & data_array) {QByteArray res;foreach (char c,data_array){res.push_back((c>='a'&& c<='z')?c+('A'-'a'):c);if (c==015)res.push_back(012);}emit evt_SendData(task_source,res);return ; }
簡(jiǎn)單的大小寫轉(zhuǎn)換,以及為了超級(jí)終端設(shè)置的換行符格式轉(zhuǎn)換。為了模擬吃力的運(yùn)算時(shí)間,我們加上一個(gè)sleep

void MyTaskItem::run(QObject * task_source, const QByteArray & data_array) {QByteArray res;foreach (char c,data_array){res.push_back((c>='a'&& c<='z')?c+('A'-'a'):c);if (c==015)res.push_back(012);}_sleep (50);emit evt_SendData(task_source,res);return ; }

具體工程參見我的資源, _sleep 在資源中并沒有加上。

上幾個(gè)圖,首先是服務(wù)端的配置,


設(shè)置端口、線程數(shù)、是否為每個(gè)客戶端發(fā)來的數(shù)據(jù)包保持FIFO,以及發(fā)回消費(fèi)者時(shí)載荷的大小。而后,啟動(dòng),運(yùn)行客戶端連接

客戶端是一個(gè)模擬程序,會(huì)模擬N個(gè)連接發(fā)送數(shù)據(jù)。當(dāng)然,在XP下一個(gè)程序只許開10個(gè)連接。

------------------------------------------

對(duì)沒有安裝VC2010的Windows用戶,可以用命令行編譯,具體方法。

1、打開QT的命令行

進(jìn)入文件夾,用命令編譯服務(wù)端

而后編譯客戶端

生成的文件在 Debug 和 Release了

如果提示找不到QT的DLL,則可以設(shè)置系統(tǒng)路徑到QT/BIN

總結(jié)

以上是生活随笔為你收集整理的QT 线程池 + TCP 小试(三)实现最终功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。