当前位置: 首页 > news >正文

用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 ,发现功能正常。

相关文章:

用QT实现 端口扫描工具1

安装在线QT&#xff0c;尽量是完整地自己进行安装&#xff0c;不然会少包 参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 临时存储空间不够。 Windows系统通常会使用C盘来存储临时文件。 修改临时文件存储位置 打开系统属性&#xff1a; 右键点击“此电…...

设计模式 结构型 适配器模式(Adapter Pattern)与 常见技术框架应用 解析

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而使原本因接口不兼容而无法一起工作的类能够协同工作。这种设计模式在软件开发中非常有用&#xff0c;尤其是在需要集成…...

vue 项目集成 electron 和 electron 打包及环境配置

vue electron 开发桌面端应用 安装 electron npm i electron -D记得加上-D&#xff0c;electron 需添加到devDependencies&#xff0c;如果添加到dependencies后面运行可能会报错 根目录创建electron文件夹&#xff0c;在electron文件夹创建main.js&#xff08;或者backgrou…...

vscode如何离线安装插件

在没有网络的时候,如果要安装插件,就会麻烦一些,需要通过离线安装的方式进行。下面记录如何在vscode离线安装插件。 一、下载离线插件 在一台能联网的电脑中,下载好离线插件,拷贝到无法联网的电脑上。等待安装。 vscode插件商店地址:https://marketplace.visualstudio.co…...

计算机网络常见面试题及解答

以下是计算机网络中常见的面试题及解答&#xff0c;按主题分类&#xff1a; --- ## **一、基础概念** ### **1. OSI 七层模型和 TCP/IP 模型的区别是什么&#xff1f;** **答&#xff1a;** - **OSI 七层模型&#xff1a;** - 应用层、表示层、会话层、传输层、网络层、数…...

举例说明AI模型怎么聚类,最后神经网络怎么保存

举例说明怎么聚类,最后神经网络怎么保存 目录 举例说明怎么聚类,最后神经网络怎么保存K - Means聚类算法实现神经元特征聚类划分成不同专家的原理和过程 特征提取: 首先,需要从神经元中提取有代表性的特征。例如,对于一个多层感知机(MLP)中的神经元,其权重向量可以作为特…...

HarmonyOS NEXT应用开发实战(一):边学边玩,从零开发一款影视APP

引言 学习一项技能&#xff0c;最好也最快的办法就是动手实战。通过自己给自己找项目练习&#xff0c;不仅能够激发兴趣&#xff0c;还能从开发实战中不断总结经验。这种学习方法是最为高效的。今天&#xff0c;我们将通过开发一款名为“爱影家”的影视APP&#xff0c;来学习H…...

STM32G0B1 can Error_Handler 解决方法

问题现象 MCU上电&#xff0c;发送0x13帧数据固定进入 Error_Handler 硬件介绍 MCU :STM32G0B1 can:NSI1042 tx 接TX RX 接RX 折腾了一下午&#xff0c;无解&#xff0c;问题依旧&#xff1b; 对比测试 STM32G431 手头有块G431 官方评估版CAN 模块&#xff1b; 同样的…...

使用 `llama_index` 构建智能问答系统:多种文档切片方法的评估

使用 llama_index 构建智能问答系统&#xff1a;多种文档切片方法的评估 代码优化与解析1. **代码结构优化**2. **日志管理**3. **环境变量管理**4. **模型初始化**5. **提示模板更新**6. **问答函数优化**7. **索引构建与查询引擎**8. **节点解析器测试** 总结 在现代自然语言…...

【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 2 今天是 7 天AI 大模型学习的第二天 &#x1f604;&#xff0c;今天我将会学习 Transformer 、Encoder-based and Decoder-Based LLMs 等 。如果有感兴趣的&#xff0c;就和我一起开始吧 &#xff5e; 课程链接 &#xff1a;2025年快速吃透AI大模型&am…...

软件工程大复习之(四)——面向对象与UML

4.1 面向对象概述 面向对象&#xff08;OO&#xff09;是一种编程范式&#xff0c;它将数据和处理数据的方法封装在对象中。面向对象的主要概念包括&#xff1a; 对象&#xff1a;实例化的数据和方法的集合。类&#xff1a;对象的蓝图或模板。封装&#xff1a;隐藏对象的内部…...

【Linux】shell命令

目录 shell的基本命令 shell - 贝壳 外在保护工具 用户、shell、内核、硬件之间的关系 解析器的分类&#xff1a; shell命令格式 history -历史记录查询 修改环境变量的值&#xff1a; shell中的特殊字符 通配符 管道 | 输入输出重定向 命令置换符 shell的基本命…...

ValuesRAG:以检索增强情境学习强化文化对齐

随着大型语言模型&#xff08;LLMs&#xff09;的迅猛发展&#xff0c;其在各个领域展现出强大的能力。然而&#xff0c;训练数据中西方中心主义的倾向&#xff0c;使得 LLMs 在文化价值观一致性方面面临严峻挑战&#xff0c;这一问题在跨文化场景中尤为突出&#xff0c;可能导…...

【机器学习篇】交通革命:机器学习如何引领未来的道路创新

嘿&#xff0c;你知道吗&#xff1f;机器学习正在交通领域掀起一场革命啦&#xff01;它将如何引领未来道路创新呢 本文有精彩的 C 代码演示、实用的图片解释&#xff0c;还有超多干货&#xff0c;保证让你大开眼界&#xff0c;点赞收藏关注&#xff0c; 开启一场奇妙的探索之…...

DeepSeek-V3 通俗详解:从诞生到优势,以及与 GPT-4o 的对比

1. DeepSeek 的前世今生 1.1 什么是 DeepSeek&#xff1f; DeepSeek 是一家专注于人工智能技术研发的公司&#xff0c;致力于打造高性能、低成本的 AI 模型。它的目标是让 AI 技术更加普惠&#xff0c;让更多人能够用上强大的 AI 工具。 1.2 DeepSeek-V3 的诞生 DeepSeek-V…...

把vue项目或者vue组件发布成npm包或者打包成lib库文件本地使用

将vue项目发布成npm库文件&#xff0c;第三方通过npm依赖安装使用&#xff1b;使用最近公司接了一个项目&#xff0c;这个项目需要集成到第三方页面&#xff0c;在第三方页面点击项目名称&#xff0c;页面变成我们的项目页面&#xff1b;要求以npm库文件提供给他们&#xff1b;…...

【STC库函数】Compare比较器的使用

如果我们需要比较两个点的电压&#xff0c;当A点高于B点的时候我们做一个操作&#xff0c;当B点高于A点的时候做另一个操作。 我们除了加一个运放或者比较器&#xff0c;还可以直接使用STC内部的一个比较器。 正极输入端可以是P37、P50、P51&#xff0c;或者从ADC的十六个通道…...

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果按键按下&#xff0c;初始导通状态变为断开&#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖&#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…...

若要把普通表转成分区表,就需要先新建分区表,然后把普通表中的数据导入新建分区表。 具体怎么导入?

将普通表转换为分区表并导入数据是一个常见的数据库管理任务。以下是详细的步骤和示例&#xff0c;帮助你在 GaussDB 中完成这一过程&#xff1a; 1. 创建分区表 首先&#xff0c;你需要创建一个新的分区表&#xff0c;定义好分区键和分区策略。假设你有一个普通表 orders&am…...

XXX公司面试真题

一、一面问题 1.线程池的主要参数 核心线程数最大线程数空闲线程存活时间存活时间单位任务队列线程工厂拒绝策略允许核心线程超时 2. 线程的状态 新建状态就绪状态运行状态阻塞状态死亡状态 补充&#xff1a;线程阻塞的原因 线程调用sleep()方法进入睡眠状态 线程得到一个…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...