C++ | Qt 获取局域网中存在的主机(IP以及主机名)
目录
原理
演示
原理
这里主要是通过QHostInfo::lookupHost获取主机名,当然也可以通过IP找主机名,只要遍历局域网IP看其是否有主机名,就可以知道,这个IP是不是被使用(但是,某些开防火墙的机子,使用了IP,也是不能找到的)
这里有个小知识点这个和QHostInfo::lookupHost不一样,使用arp会准确很多,后期将会给出arp去扫描局域网使用的IP:
演示
程序运行如下:
程序结构如下:
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
class QHostInfo;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void lookUp(const QHostInfo &host);void btnClicked();private:Ui::Widget *ui;
};#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
#include <QHostInfo>
#include <QDebug>#define Col1 0
#define Col2 1Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//this->setWindowTitle("CSDN IT1995");ui->tableWidget->horizontalHeader()->setStretchLastSection(true);ui->tableWidget->setRowCount(255);connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(btnClicked()));
}Widget::~Widget()
{delete ui;
}int useRow = 0;void Widget::lookUp(const QHostInfo &host)
{if(host.error() != QHostInfo::NoError){qDebug() << "Lookup failed:" << host.errorString();return;}if(host.addresses()[0].toString() == host.hostName())return;QTableWidgetItem *ipItem = new QTableWidgetItem;ipItem->setText(host.addresses()[0].toString());QTableWidgetItem *hostItem = new QTableWidgetItem;hostItem->setText(host.hostName());if(ipItem->text() != hostItem->text()){ipItem->setTextColor(QColor(Qt::red));hostItem->setTextColor(QColor(Qt::red));}ui->tableWidget->setItem(useRow, Col1, ipItem);ui->tableWidget->setItem(useRow, Col2, hostItem);useRow++;
}void Widget::btnClicked()
{for(int i = 1 ; i < 256; i++){QHostInfo::lookupHost(QString("192.1.101.%1").arg(i), this, SLOT(lookUp(QHostInfo)));}
}
源码打包下载地址:
https://github.com/fengfanchen/Qt/tree/master/getLANUser
C++ | Qt 获取局域网中存在的主机(IP以及主机名)相关推荐
- 批处理获取计算机域名,用批处理获取局域网中电脑ip和mac地址表
用批处理获取局域网中电脑ip和mac地址表 为了避免IP地址抵触和体系安全,局域网中电脑的IP地址和MAC地址对照表是要常常备份的.除了能够运用软件处理外,用细巧专心的批处理也是一个不错的挑选.用记事 ...
- Java获取局域网中所有ip和Mac地址
Java获取局域网中所有ip和Mac地址 定义一个Util public class IpAndMacUtil {/*** 获取本机Mac地址* @param ia* @return* @throws ...
- 计算机网络连接能否隐藏位置,如何能在局域网中隐藏电脑及IP地址
局域网在各大单位中最为常见,所有开机的电脑都会不约而同的出现在单位的局域网上,而且大家都有固定的IP地址,而固定的IP地址很容易被攻击,因此,有没有什么办法可以在局域内隐藏自己的电脑及IP地址呢?答案 ...
- cmd扫描局域网ip 如何扫描局域网中的路由器的IP地址
电脑IP地址分两种,静态IP地址和DHCP动态IP. 如果是静态IP,不知道内网IP配置情况,只能逐个地址段试了. 如果是DHCP动态获取IP,一般的情况是,DHCP服务器先给你分配一个临时的IP地址 ...
- qt获取QString中第一个汉字
概述 一串汉语中获取这串汉语中的第一个汉字.采用的方法front(). QString str(QStringLiteral("李数"));QString strText = st ...
- Qt获取QTextEdit中的内容
1.主要用到了QTextEdit中的成员函数:toPlainText(): 2.在编辑框中写上内容,点击获取按钮,通过控制台输出获取到的内容. 3.全部源码在附件中,这里之贴出主要实现部分. Text ...
- 查看 网关 及 局域网中的所有设备 IP地址
首先安装nmap库: sudo apt-get install nmap 查看当前路由器(即网关)IP地址: route|grep -i default|awk '{print "网 ...
- Python获取本机MAC地址,ip和主机名
获取mac地址: import uuid def get_mac_address():mac=uuid.UUID(int = uuid.getnode()).hex[-12:]return " ...
- vmware虚拟机查看宿主机ip(主机ip)
1.桥接模式,直接就是主机的ip 2.NAT模式,主机ipconfig,以太网适配器 VMware Network Adapter VMnet8的ip
最新文章
- 二元学习法3.0:三把学习大剑,打通学习的底层密码_学习方法
- 设置读取plc时间_最简单的一种方法来step7 读取PLC时间日期
- ​OpenVAS漏洞扫描基础教程之创建用户组与创建角色
- Redis 内存压缩实战
- ATF RT-SVC的介绍
- cmd长ping记录日志和时间_四个网络命令ping、arp、tracert、route的详细用法
- mysql 循环体 如何测试_mysql里如何循环插入数据,进行测试
- 是什么摧毁了程序员的工作效率
- mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表
- 循环神经网络——裁剪梯度(应对梯度爆炸)
- 常见的编程语言的特点与应用领域浅谈
- java怎么使用mfc,调用mfc方法
- 零跑汽车冲刺港股:年营收31亿 去年曾募资88亿
- 歌曲:酒干倘卖无 背后的故事
- docker-compose配置固定网段Pool overlaps with other one on this address space
- 中西文化交流互融:500年老字号隆庆祥“奏响”2022年
- php 字符串放到数组中,在PHP中将字符串转换为数组(Converting string into array in php)...
- 那些你不得不了解的HTML基础
- HTML用画布画哆啦A梦,前端小项目:使用canvas绘画哆啦A梦
- C#设计模式(6)——原型模式(Prototype Pattern)