目录

原理

演示


原理

这里主要是通过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以及主机名)相关推荐

  1. 批处理获取计算机域名,用批处理获取局域网中电脑ip和mac地址表

    用批处理获取局域网中电脑ip和mac地址表 为了避免IP地址抵触和体系安全,局域网中电脑的IP地址和MAC地址对照表是要常常备份的.除了能够运用软件处理外,用细巧专心的批处理也是一个不错的挑选.用记事 ...

  2. Java获取局域网中所有ip和Mac地址

    Java获取局域网中所有ip和Mac地址 定义一个Util public class IpAndMacUtil {/*** 获取本机Mac地址* @param ia* @return* @throws ...

  3. 计算机网络连接能否隐藏位置,如何能在局域网中隐藏电脑及IP地址

    局域网在各大单位中最为常见,所有开机的电脑都会不约而同的出现在单位的局域网上,而且大家都有固定的IP地址,而固定的IP地址很容易被攻击,因此,有没有什么办法可以在局域内隐藏自己的电脑及IP地址呢?答案 ...

  4. cmd扫描局域网ip 如何扫描局域网中的路由器的IP地址

    电脑IP地址分两种,静态IP地址和DHCP动态IP. 如果是静态IP,不知道内网IP配置情况,只能逐个地址段试了. 如果是DHCP动态获取IP,一般的情况是,DHCP服务器先给你分配一个临时的IP地址 ...

  5. qt获取QString中第一个汉字

    概述 一串汉语中获取这串汉语中的第一个汉字.采用的方法front(). QString str(QStringLiteral("李数"));QString strText = st ...

  6. Qt获取QTextEdit中的内容

    1.主要用到了QTextEdit中的成员函数:toPlainText(): 2.在编辑框中写上内容,点击获取按钮,通过控制台输出获取到的内容. 3.全部源码在附件中,这里之贴出主要实现部分. Text ...

  7. 查看 网关 及 局域网中的所有设备 IP地址

      首先安装nmap库: sudo apt-get install nmap   查看当前路由器(即网关)IP地址: route|grep -i default|awk '{print "网 ...

  8. Python获取本机MAC地址,ip和主机名

    获取mac地址: import uuid def get_mac_address():mac=uuid.UUID(int = uuid.getnode()).hex[-12:]return " ...

  9. vmware虚拟机查看宿主机ip(主机ip)

    1.桥接模式,直接就是主机的ip 2.NAT模式,主机ipconfig,以太网适配器 VMware Network Adapter VMnet8的ip

最新文章

  1. 二元学习法3.0:三把学习大剑,打通学习的底层密码_学习方法
  2. 设置读取plc时间_最简单的一种方法来step7 读取PLC时间日期
  3. ​OpenVAS漏洞扫描基础教程之创建用户组与创建角色
  4. Redis 内存压缩实战
  5. ATF RT-SVC的介绍
  6. cmd长ping记录日志和时间_四个网络命令ping、arp、tracert、route的详细用法
  7. mysql 循环体 如何测试_mysql里如何循环插入数据,进行测试
  8. 是什么摧毁了程序员的工作效率
  9. mysql 跳表 b 树_简单谈谈Mysql索引与redis跳表
  10. 循环神经网络——裁剪梯度(应对梯度爆炸)
  11. 常见的编程语言的特点与应用领域浅谈
  12. java怎么使用mfc,调用mfc方法
  13. 零跑汽车冲刺港股:年营收31亿 去年曾募资88亿
  14. 歌曲:酒干倘卖无 背后的故事
  15. docker-compose配置固定网段Pool overlaps with other one on this address space
  16. 中西文化交流互融:500年老字号隆庆祥“奏响”2022年
  17. php 字符串放到数组中,在PHP中将字符串转换为数组(Converting string into array in php)...
  18. 那些你不得不了解的HTML基础
  19. HTML用画布画哆啦A梦,前端小项目:使用canvas绘画哆啦A梦
  20. C#设计模式(6)——原型模式(Prototype Pattern)

热门文章

  1. while((getchar ()) != '\n')理解
  2. NFS 故障排错指南
  3. 最好用的手机端C/C++语言编程软件, 不要说没电脑就不学编程了!
  4. 宁要曹县一张床,不要深圳一套房!数据解读曹县为啥如此666?
  5. 一企业彻底实现金融风险数字化,节约人力超4000小时
  6. 没有报表和数据分析,银行数据仓库只能是一盘散沙
  7. 用程序解决所有文件的格式转换
  8. 新浪uc2010官方下载
  9. 代码写累了来这看看,笑笑
  10. 看完此文章若你还不能完美的入门Python,我将永远退出IT界