用QT实现 端口扫描工具1

安装在线QT,尽量是完整地自己进行安装,不然会少包

参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客

临时存储空间不够。

Windows系统通常会使用C盘来存储临时文件。

修改临时文件存储位置

  1. 打开系统属性

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 点击“高级系统设置”。
  2. 环境变量

    • 在“系统属性”窗口中,选择“高级”选项卡,然后点击“环境变量”按钮。
  3. 修改临时文件路径

    • 在“用户变量”部分,找到TEMPTMP变量。
    • 选择其中一个,点击“编辑”。
    • 在弹出的窗口中,将路径更改为您希望存储临时文件的新位置(例如,D:\Temp)。
    • TEMPTMP变量都进行相同的修改。
  4. 创建新文件夹

    • 确保您指定的新路径已经存在。如果没有,请手动创建该文件夹。
  5. 保存更改

    • 点击“确定”保存更改,关闭所有窗口。
  6. 重启计算机

    • 为了确保更改生效,建议重启计算机。

修改路径之后即可安装

打开QT

再点一次,总共三次

配置如下

添加网络功能

在mainwindow.h中引入库

由于扫描功能没有qt自带的对应函数,所以要自己添加,无法像给quit添加槽一样直接添加

内部添加代码

// 从用户界面的输入框中获取 IP 地址  
QString strIP = ui->lineEdit_IP->text();  
// 从用户界面的数字输入框中获取端口号  
int intPort = ui->spinBox_Port->value();  
// 将端口号转换为字符串格式  
QString strPort = QString::number(intPort);  

// 检查 IP 地址是否为空  
if(strIP.isEmpty()){  
    // 如果 IP 地址为空,弹出信息框提示用户输入 IP  
    QMessageBox::information(this, tr("Error"), QStringLiteral("请输入 IP"), QMessageBox::Ok);  
    return; // 结束函数执行  
}  

// 检查端口号是否为 0  
if(intPort == 0){  
    // 如果端口号为 0,弹出信息框提示用户输入端口  
    QMessageBox::information(this, tr("Error"), QStringLiteral("请输入 port"), QMessageBox::Ok);  
    return; // 结束函数执行  
}  

// 清空树形控件中的所有项  
ui->treeWidget->clear();  

// 创建一个新的树形控件项,使用输入的 IP 地址作为其文本  
QTreeWidgetItem *items1 = new QTreeWidgetItem(ui->treeWidget, QStringList(strIP));  

// 创建一个 QTcpSocket 对象,用于网络连接  
QTcpSocket socket(0);  
// 取消任何现有的连接  
socket.abort();  
// 尝试连接到指定的 IP 地址和端口  
socket.connectToHost(strIP, intPort);  

// 等待连接,最多等待 1000 毫秒(1 秒)  
if(socket.waitForConnected(1000))  
{  
    // 如果连接成功,添加一个新的树形控件项,显示端口已打开  
    new QTreeWidgetItem(items1, QStringList(strPort + " opened"));  
}  
else  
{  
    // 如果连接失败,添加一个新的树形控件项,显示端口已关闭  
    new QTreeWidgetItem(items1, QStringList(strPort + " closed"));  
}

如果显示找不到部件,有可能是大小写这种微妙的差别。

构建并运行

localhost 通常用 IP 地址 127.0.0.1 表示。这是一个环回地址,指向本地计算机。使用这个地址可以在网络上与本机进行通信,而不需要通过网络接口。

用cmd查看

0.0.0.0:135 的监听范围更广,包含了 127.0.0.1:135 的监听范围。

这说明cmd的结果与我运行的结果是一致的。

修改 QTreeWidget 初始化表头
在构造函数中添加如下代码,设置 QTreeWidget 控件的初始化表头为“扫描结果”
//给 QTreeWidget 初始化表头
 QStringList head;
 head << "扫描结果";
 // 设置表头
 ui->treeWidget->setHeaderLabels(head);

我的遮挡我一直以为是保存更新的问题,其实只是框框拖小了,拖大一点就不遮挡了

生成发布版本

再按锤子生成exe

打开release的文件夹

运行这个“应用程序”

显示找不到三个dll

解决:

使用 Qt 工具构建发行包
Qt 提供了一个工具 windeployqt.exe 实现发行包的构建。
把生成的 simplescan.exe 复制到一个目录下,如:
D:\YunNotes\QTdevelopment\PortScanning\workPlace\PortScanning.exe
进入qt终端 然后输入运行 windeployqt
从win进cmd
search
windeployqt D:\YunNotes\QTdevelopment\PortScanning\workPlace\PortScanning.exe
之后即可在 workPlace 目录下看到 windeployqt 工具自动复制的插件文件夹和 dll 文件等。这
时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。
再次运行测试 .exe ,发现功能正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949203.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Selenium 自动化,如何下载正确的 ChromeDriver

在 Python 的 Selenium 自动化操作中&#xff0c;chromedriver 是不可或缺的驱动程序。没有正确安装对应版本的驱动&#xff0c;运行代码时常常会遇到报错问题&#xff0c;比如 “session not created: This version of ChromeDriver only supports Chrome version XX”。 今天…

泊松融合 实例2025

目录 例子1: 实现代码: 原作者代码: 本博客直接给出来最好的效果和源代码 参数说明: 效果不好,不推荐的参数:MONOCHROME_TRANSFER,NORMAL_CLONE 例子1: 目标图: 原图: 效果图: 实现代码: 坐标是要目标图上中心点坐标: import cv2if __na

前端如何从入门进阶到高级

在前端学习的道路上&#xff0c;我们将其划分为三个阶段&#xff1a;入门、实战和进阶。以下是各阶段的学习指南 一、入门阶段 在入门阶段&#xff0c;我们的目标是掌握前端的基本语法和知识&#xff0c;以便能够独立解决一些基础问题。这一阶段&#xff0c;我们建议通过视频…

Python爬虫基础——认识网页结构(各种标签的使用)

1、添加<div>标签的代码定义了两个区块的宽度和高度均为100px&#xff0c;边框的格式也相同&#xff0c;只是区块中显示的内容不同&#xff1b; 2、添加<ul>和<ol>标签分别用于定义无序列表和有序列表。<il>标签位于<ul>标签或<ol>标签之…

基于W2605C语音识别合成芯片的智能语音交互闹钟方案-AI对话享受智能生活

随着科技的飞速发展&#xff0c;智能家居产品正逐步渗透到我们的日常生活中&#xff0c;其中智能闹钟作为时间管理的得力助手&#xff0c;也在不断进化。基于W2605C语音识别与语音合成芯片的智能语音交互闹钟&#xff0c;凭借其强大的联网能力、自动校时功能、实时天气获取、以…

Python提取目标Json键值:包含子嵌套列表和字典

目标&#xff1a;取json中所有的Name、Age字典 思路&#xff1a;递归处理字典中直接包含子字典的情况&#xff0c; import jsondef find_targ_dicts(data,key1,key2):result {}if isinstance(data, dict):if key1 in data and key2 in data: # 第一层字典中包含key1和key2re…

你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?

你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗&#xff1f; 一. JVM、JDK与JRE的关系二. JVM、JDK与JRE的作用2.1 什么是JVM&#xff1f;2.2 什么是JDK&#xff1f;2.3 什么是JRE&#xff1f; 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有…

深度学习blog-RAG构建高效生成式AI的优选路径

RAG&#xff08;Retrieval-Augmented Generation&#xff09; 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;模型的性能和应用场景也不断扩展。其中&#xff0c;检索增强生成&#xff08;RAG, Retrieval-Augmented Generation&#xff09;模型作为一种新…

数据中台与数据治理服务方案[50页PPT]

本文概述了数据中台与数据治理服务方案的核心要点。数据中台作为政务服务数据化的核心&#xff0c;通过整合各部门业务系统数据&#xff0c;进行建模与加工&#xff0c;以新数据驱动政府管理效率提升与政务服务能力增强。数据治理则聚焦于解决整体架构问题&#xff0c;确保数据…

AI生成PPT,效率与创意的双重升级

AI生成PPT&#xff0c;效率与创意的双重升级&#xff01;在信息化高速发展的今天&#xff0c;我们的工作节奏被无限压缩&#xff0c;效率成为了衡量工作能力的重要指标。而制作PPT这种事&#xff0c;总是让人又爱又恨——既想做得出彩&#xff0c;又不想花费大量时间。现在有了…

【HF设计模式】05-单例模式

声明&#xff1a;仅为个人学习总结&#xff0c;还请批判性查看&#xff0c;如有不同观点&#xff0c;欢迎交流。 摘要 《Head First设计模式》第5章笔记&#xff1a;结合示例应用和代码&#xff0c;介绍单例模式&#xff0c;包括遇到的问题、采用的解决方案、以及达到的效果。…

嵌入式linux系统中QT信号与槽实现

第一:Qt中信号与槽简介 信号与槽是Qt编程的基础。因为有了信号与槽的编程机制,在Qt中处理界面各个组件的交互操作时变得更加直观和简单。 槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。 案例操作与实现: #ifndef …

php有两个数组map比较 通过id关联,number可能数量变化 比较他们之间增加修改删除

在PHP中&#xff0c;比较两个通过ID关联的数组&#xff0c;并确定它们之间的增加、修改和删除操作&#xff0c;你可以使用以下步骤&#xff1a; 创建两个数组&#xff1a;假设你有两个数组&#xff0c;分别表示“旧数据”和“新数据”。使用ID作为键&#xff1a;为了方便比较&a…

C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)

1、本节要实现的内容 我们在前期的教程中,讨论了在即时渲染模式下的光照内容。但在我们后期使用着色器的核心模式下,会经常在着色器中使光照,我们这里就讨论一下着色器光照效果,以及光照贴图效果,同时这里知识会为后期的更多光照效果做一些铺垫。本节我们首先讨论冯氏光照…

《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__overview》学习笔记

1.GIC是基于Arm GIC架构实现的&#xff0c;该架构已经从GICv1发展到最新版本GICv3和GICv4。 Arm 拥有多个通用中断控制器&#xff0c;可为所有类型的 Arm Cortex 多处理器系统提供一系列中断管理解决方案。这些控制器的范围从用于具有小型 CPU 内核数的系统的最简单的 GIC-400 …

健身房管理系统多身份

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端&#xff1a;Java、JavaWeb / Springboot。前端&#xff1a;Vue、HTML / CSS / Javascript 等。数据库&#xff1a;MySQL 二、相关软件&#xff08;列出的软件其一均可运行&#xff09; I…

General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model

通用 OCR 理论&#xff1a;通过统一的端到端模型实现 OCR-2.0 Abstract 随着人们对人工光学字符的智能处理需求日益增长&#xff0c;传统的OCR系统&#xff08;OCR-1.0&#xff09;已越来越不能满足人们的使用需求。本文&#xff0c;我们将所有人工光学信号&#xff08;例如纯…

大数据组件(二)快速入门数据集成平台SeaTunnel

大数据组件(二)快速入门数据集成平台SeaTunnel SeaTunnel是一个超高性能的分布式数据集成平台&#xff0c;支持实时海量数据同步。 每天可稳定高效同步数百亿数据&#xff0c;已被近百家企业应用于生产。 SeaTunnel的运行流程如下图所示&#xff1a; 工作流程为&#xff1a;So…

前端如何判断多个请求完毕

在前端开发中&#xff0c;经常会遇到需要同时发起多个异步请求&#xff0c;并在所有请求都完成后再进行下一步操作的情况。 这里有几个常用的方法来实现这一需求&#xff1a; 使用 Promise.all() Promise.all() 方法接收一个 Promise 对象的数组作为参数&#xff0c;当所有的…

【机器学习】穷理至极,观微知著:微积分的哲思之旅与算法之道

文章目录 微积分基础&#xff1a;理解变化与累积的数学前言一、多重积分的高级应用1.1 高维概率分布的期望值计算1.1.1 多维期望值的定义1.1.2 Python代码实现1.1.3 运行结果1.1.4 结果解读 1.2 特征空间的体积计算1.2.1 单位球体的体积计算1.2.2 Python代码实现1.2.3 运行结果…