From 7ee3e2f83297bf6eeec0e61e8e0af1e5b8149b68 Mon Sep 17 00:00:00 2001 From: fong Date: Tue, 30 Jan 2024 18:32:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=B7=AE=E5=86=85=E5=AD=98=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E9=97=AE=E9=A2=98=20Signed-off-by:=20fong=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ip_sacaner/scan_run.cpp | 36 ++++++++++++++++++++++++++++++------ ip_sacaner/scan_run.h | 11 +++++++---- ip_sacaner/widget.cpp | 9 ++++++--- ip_sacaner/widget.h | 1 + 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/ip_sacaner/scan_run.cpp b/ip_sacaner/scan_run.cpp index 9d04b70..695dd98 100644 --- a/ip_sacaner/scan_run.cpp +++ b/ip_sacaner/scan_run.cpp @@ -36,11 +36,22 @@ trytry::trytry() void trytry::run() { + emit try_one(1); + QString temp = QString("%1:%2").arg(ipstr).arg(ipint); + QTcpSocket m_socket; + m_socket.connectToHost(ipstr, ipint, QTcpSocket::ReadWrite); + if (m_socket.waitForConnected(timeout)) + { + emit connect_ok(temp); + } + m_socket.disconnectFromHost(); + m_socket.disconnect(); + m_socket.deleteLater(); - qDebug()<ipstr<<":"<ipint; - sleep(1); + qDebug()<now_thread_num<<" - set:"<set_thread_num; - while(this->now_thread_num>this->set_thread_num); + connecttry=new trytry; connecttry->timeout=this->timeout; connecttry->ipstr=str_ips_list.at(ii); connecttry->ipint=ports_list.at(iii); - this->now_thread_num+=1; - //connect(connecttry,&trytry::started,[=]{this->now_thread_num+=1;}); - connect(connecttry,&trytry::finished,[=]{this->now_thread_num-=1;}); + + + connect(connecttry,&trytry::try_one,this,&dispatch::f_one); + connect(connecttry,&trytry::connect_ok,[=](QString temp){emit connect_ok(temp);}); + + connect(connecttry,&trytry::finished,[=]{ + connecttry->disconnect(); + connecttry->quit(); + connecttry->wait(); + }); connecttry->start(); @@ -224,6 +242,8 @@ void dispatch::run() now_scan+=1; + while(this->now_thread_num>this->set_thread_num); + } @@ -235,4 +255,8 @@ void dispatch::run() emit dispatch_finish(); } +void dispatch::f_one(qint16 temp) +{ + this->now_thread_num+=temp; +} diff --git a/ip_sacaner/scan_run.h b/ip_sacaner/scan_run.h index 095db53..a11cc59 100644 --- a/ip_sacaner/scan_run.h +++ b/ip_sacaner/scan_run.h @@ -22,7 +22,9 @@ public: QString ipstr; quint32 ipint; void run(); - +signals: + void try_one(qint16); + void connect_ok(QString); }; @@ -33,8 +35,8 @@ public: dispatch(); - quint16 set_thread_num; - quint16 now_thread_num; + qint16 set_thread_num; + qint16 now_thread_num; quint16 thread_start_lock=0; quint16 timeout; @@ -45,11 +47,12 @@ public: void run(); - + void f_one(qint16 temp); signals: void dispatch_finish(); void dispatch_one(); void return_jindu(quint16); + void connect_ok(QString); }; diff --git a/ip_sacaner/widget.cpp b/ip_sacaner/widget.cpp index 99d084d..0e72fe1 100644 --- a/ip_sacaner/widget.cpp +++ b/ip_sacaner/widget.cpp @@ -5,7 +5,10 @@ - +void Widget::output_chuli(QString temp) +{ + ui->outputlist->append(temp); +} void Widget::jindu_chuli(quint16 temp) @@ -40,8 +43,8 @@ Widget::Widget(QWidget *parent) connect(dispatch_thread,&dispatch::dispatch_finish,[=]{ emit stop_scan(); }); - connect(dispatch_thread,&dispatch::return_jindu,this,&Widget::jindu_chuli); - + connect(dispatch_thread,&dispatch::return_jindu,this,&Widget::jindu_chuli,Qt::QueuedConnection); + connect(dispatch_thread,&dispatch::connect_ok,this,&Widget::output_chuli,Qt::QueuedConnection); ui->progressBar->setValue(0); dispatch_thread->start(); ui->stard_scan->setDisabled(false); diff --git a/ip_sacaner/widget.h b/ip_sacaner/widget.h index 54ad9fb..ce0913f 100644 --- a/ip_sacaner/widget.h +++ b/ip_sacaner/widget.h @@ -33,6 +33,7 @@ public: quint64 t_bar=0; quint64 nt_bar=0; + void output_chuli(QString temp); void jindu_chuli(quint16 temp); signals: void stop_scan();