資源簡介
一個端口掃描器,可以設定IP范圍和端口范圍,具體描述見本人博客~~~

代碼片段和文件信息
#include?“csanner.h“
#include?“ui_csanner.h“
Csanner::Csanner(QWidget?*parent)?:
????QDialog(parent)
????ui(new?Ui::Csanner)
{
????ui->setupUi(this);
????//一些初始化
????ui->endPortSpinBox->setMaximum(10000);//spinbox可以設置到500,不然只能到99
????startIp?=?“127.0.0.1“;
????endIp?=?“127.0.0.2“;
????endPort=1000;
????ui->starIPLineEdit->setText(startIp);
????ui->endIPLineEdit->setText(endIp);
????ui->endPortSpinBox->setValue(endPort);
}
Csanner::~Csanner()
{
????delete?ui;
}
int?Csanner::Ip2Num(QString?ip)
{
????bool?ok;
????int?lp[4];
????QStringList?iplist=ip.split(‘.‘);
????for?(int?i=0;i ????????lp[i]=iplist[i].toInt(&ok10);
????return?lp[0]?<24?|?lp[1]?<16?|?lp[2]?<8?|?lp[3];
}
QString?Csanner::Num2Ip(int?num)
{
????int?ip[4];
????ip[3]?=?(num?&?0xff);
????ip[2]?=?(num?&?0xff00)?>>?8;
????ip[1]?=?(num?&?0xff0000)?>>?16;
????ip[0]?=?(num?&?0xff000000)?>>?24;
????QString?tempIp=QString(“%1“).arg(ip[0])+QString(“.“)+QString(“%1“).arg(ip[1])+QString(“.“)+QString(“%1“).arg(ip[2])+QString(“.“)+QString(“%1“).arg(ip[3]);
????return?tempIp;
}
void?Csanner::on_beginBtn_clicked()
{
????startIp?=?ui->starIPLineEdit->text();//從控件中獲取值
????endIp?=?ui->endIPLineEdit->text();
????startPort?=?ui->startPorSpinBox->value();
????endPort?=?ui->endPortSpinBox->value();
????ui->portResultTextBrowser->clear();//清除文本
????QTcpSocket?socket;
????int?sipIntendipInt;
????sipInt?=?Ip2Num(startIp);
????endipInt?=?Ip2Num(endIp);
????//進度條設置
????int?progressCountIp=1;
????ui->scannerProgressBar->setRange(0(endipInt-sipInt+1)*(endPort-startPort));//最大范圍為ip的個數(shù)乘以端口數(shù)
????for(int?tempipInt?=?sipInt?;?tempipInt?<=?endipInt?;?tempipInt++progressCountIp++)
????{
????????QString?IpString?=?“Now?ip?is?:“?+Num2Ip(tempipInt);
????????ui->portResultTextBrowser->append(IpString);//輸出當前遍歷的Ip地址。
????????for(int?i=startPort;i<=endPort;i++)
????????{
????????????socket.abort();
????????????socket.connectToHost(startIpi);
?????????????ui->scannerProgressBar->setValue(progressCountIp*i);//進度條設置
????????????if(socket.waitForConnected(10))
????????????{
??????????????//text.lock();?//這里好像要用到線程管理才行
??????????????QString?msg?=?QString::number(i)?+“connected“;//輸出那個端口開著
??????????????ui->portResultTextBrowser->append(msg);
??????????????//?text.unlock();
??????????????//ui->portResultTextBrowser->setText(msg);
???????????????//??qDebug()<????????????}
????????}
????}
}
void?Csanner::on_endBtn_clicked()
{
????close();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2727??2018-05-04?20:38??portsacnner\csanner.cpp
?????文件????????649??2018-05-04?20:02??portsacnner\csanner.h
?????文件????????647??2018-05-04?21:02??portsacnner\csanner.h.autosave
?????文件???????5519??2018-05-04?20:38??portsacnner\csanner.ui
?????文件????????606??2018-05-04?16:44??portsacnner\main.cpp
?????文件???????1029??2018-05-04?15:18??portsacnner\portsacnner.pro
?????文件??????23929??2018-05-04?17:07??portsacnner\portsacnner.pro.user
?????目錄??????????0??2018-05-04?21:02??portsacnner
-----------?---------??----------?-----??----
????????????????35106????????????????????8
評論
共有 條評論