核心提示:端口扫描器最近在学习网络编程,我就用Qt做了一个端口扫描小程序。先附图,再讲原理和编程方法。开始扫描前:扫描后的结果:原理:主要是用IP地址和端口号(也就是套接字)和主机连接,如果主机应答则表示该端口...
端口扫描器
最近在学习网络编程,我就用Qt做了一个端口扫描小程序。
先附图,再讲原理和编程方法。
开始扫描前:
扫描后的结果:
原理:
主要是用IP地址和端口号(也就是套接字)和主机连接,如果主机应答则表示该端口在工作,反之则没有。
编程方法
Qt中用到的函数:
(1)void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol =
AnyIPProtocol)
(2)bool QAbstractSocket::waitForConnected(int msecs = 30000)
看到这两个函数,一般人头都大了,但是不用着急,听我道来。
第一个函数是用来建立连接,第一个参数是IP地址,也就是主机名,第二个参数是端口号,后面参数忽略,啦啦啦~~~
第二个函数是用来确定是否主机响应,如果响应,则返回真,后面参数单位为ms。
核心代码为:
QTcpSocket socke;//创建一个套接字 socket.abort();//断开连接 socket.connectToHost(Ip,port);//连接主机 if(socket.waitForConnected(1000))//如果主机响应,进行处理.. { //内部处理函数,我这里是简单输出到文本浏览器中 QString msg = QString::number(i) +"connected"; ui->portResultTextBrowser->append(msg); }
其他代码就是一些界面处理什么的,这里就不讲了。