From 7c691264023109098d718496a050c252bccc5d8c Mon Sep 17 00:00:00 2001 From: fong Date: Wed, 31 Jan 2024 12:05:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E4=BF=AE=E8=A1=A5=E8=A1=A5=20Signed-o?= =?UTF-8?q?ff-by:=20fong=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_sacaner/scan_run.cpp | 37 +++++++++++++++++++++++++++++-------- ip_sacaner/scan_run.h | 9 +++++++++ ip_sacaner/widget.ui | 2 +- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/ip_sacaner/scan_run.cpp b/ip_sacaner/scan_run.cpp index 072f6c4..0ac6b8c 100644 --- a/ip_sacaner/scan_run.cpp +++ b/ip_sacaner/scan_run.cpp @@ -192,6 +192,9 @@ void dispatch::run() { for(quint64 ii=0;iinow_thread_num<<" - set:"<set_thread_num; + trytry_ping=new trytryping; trytry_ping->timeout=this->timeout; trytry_ping->ipstr=str_ips_list.at(ii); @@ -199,12 +202,14 @@ void dispatch::run() //connect(trytry_ping,&trytryping::try_one,this,&dispatch::f_one); - connect(trytry_ping,&trytry::started,[=]{this->now_thread_num+=1;}); - connect(trytry_ping,&trytry::finished,[=]{this->now_thread_num-=1;}); + //connect(trytry_ping,&trytry::started,this,&dispatch::xiancheng_jia,Qt::QueuedConnection); + connect(trytry_ping,&trytry::finished,this,&dispatch::xiancheng_jian,Qt::QueuedConnection); connect(trytry_ping,&trytryping::connect_ok,[=](QString temp){emit connect_ok(temp);}); trytry_ping->start(); jindu=(quint64)(((qreal)(ii)/(qreal)(ips_num))*100); + jindu+=1; + if(jindu>100){jindu=100;} if(jindu!=jindu_old) { jindu_old=jindu; @@ -214,7 +219,8 @@ void dispatch::run() } - while(this->now_thread_num>this->set_thread_num); + this->now_thread_num+=1; + while(this->now_thread_num>=this->set_thread_num); } }else { @@ -279,7 +285,7 @@ void dispatch::run() //qDebug() <now_thread_num<<" - set:"<set_thread_num; + qDebug()<<"int: "<now_thread_num<<" - set:"<set_thread_num; connecttry=new trytry; @@ -289,12 +295,14 @@ void dispatch::run() //connect(connecttry,&trytry::try_one,this,&dispatch::f_one); - connect(connecttry,&trytry::started,[=]{this->now_thread_num+=1;}); - connect(connecttry,&trytry::finished,[=]{this->now_thread_num-=1;}); + //connect(connecttry,&trytry::started,this,&dispatch::xiancheng_jia,Qt::QueuedConnection); + connect(connecttry,&trytry::finished,this,&dispatch::xiancheng_jian,Qt::QueuedConnection); connect(connecttry,&trytry::connect_ok,[=](QString temp){emit connect_ok(temp);}); connecttry->start(); jindu=(quint64)(((qreal)(now_scan)/(qreal)(scantimes))*100); + jindu+=1; + if(jindu>100){jindu=100;} if(jindu!=jindu_old) { jindu_old=jindu; @@ -305,7 +313,8 @@ void dispatch::run() now_scan+=1; - while(this->now_thread_num>this->set_thread_num); + this->now_thread_num+=1; + while(this->now_thread_num>=this->set_thread_num); } @@ -323,6 +332,18 @@ void dispatch::run() void dispatch::f_one(qint16 temp) { - //this->now_thread_num+=temp; + this->now_thread_num+=temp; + +} + +void dispatch::xiancheng_jia() +{ + this->now_thread_num+=1; + +} + +void dispatch::xiancheng_jian() +{ + this->now_thread_num-=1; } diff --git a/ip_sacaner/scan_run.h b/ip_sacaner/scan_run.h index 2f4f53b..603ae58 100644 --- a/ip_sacaner/scan_run.h +++ b/ip_sacaner/scan_run.h @@ -12,6 +12,7 @@ #include #include #include +#include class trytryping : public QThread { Q_OBJECT @@ -65,11 +66,19 @@ public: bool pingonly=false; void run(); void f_one(qint16 temp); + void xiancheng_jia(); + void xiancheng_jian(); + signals: void dispatch_finish(); void dispatch_one(); void return_jindu(quint16); void connect_ok(QString); + +private: + + QMutex pauseLock; + }; diff --git a/ip_sacaner/widget.ui b/ip_sacaner/widget.ui index 33947ee..b9a6f04 100644 --- a/ip_sacaner/widget.ui +++ b/ip_sacaner/widget.ui @@ -83,7 +83,7 @@ 1024 - 128 + 64