首页 > 其他分享 >Qt - 网络相关的类

Qt - 网络相关的类

时间:2024-07-24 16:08:25浏览次数:14  
标签:Qt QHostInfo 网络 地址 QHostAddress IP地址 相关 网络接口 IPv4

1. QHostInfo

QHostInfo类为主机名查找提供了静态函数 。

QHostInfo查找与主机名关联的IP地址或与IP地址关联的主机名。 这个类提供了两个方便的静态函数:一个异步工作并在找到主机时发出信号,另一个阻塞并返回QHostInfo对象。

异步查找主机的IP地址,调用lookupHost(),它接受主机名或IP地址、接收方对象和槽签名作为参数并返回ID。 您可以通过使用查找ID调用abortHostLookup()来中止查找。

 
//通过域名查找ip
QHostInfo::lookupHost("www.baidu.com",this,[](const QHostInfo& info)
{
    qDebug()<<info.hostName()<<info.addresses();
});
//查找ip是否存在
QHostInfo::lookupHost("183.232.231.172",this,[](const QHostInfo& info)
{
    qDebug()<<info.hostName()<<info.addresses();
});

当结果准备好时,将调用该槽。 结果存储在QHostInfo对象中。 调用addresses()获取主机的IP地址列表,调用hostName()获取所查找的主机名。

如果查找失败,error()将返回所发生的错误类型。 errorString()给出了可读的查找错误描述。

如果你想要一个阻塞查找,使用QHostInfo::fromName()函数:

 
QHostInfo info = QHostInfo::fromName("smtp.qq.com");
qDebug()<<info.hostName()<<info.addresses();

QHostInfo通过IDNA和Punycode标准支持国际化域名(IDNs)。

要检索本地主机的名称,请使用静态QHostInfo::localHostName()函数。

 
qDebug()<< QHostInfo::localHostName();

 

2. QHostAddress

QHostAddress类提供一个IP地址。

这个类以独立于平台和协议的方式保存IPv4或IPv6地址。

QHostAddress通常与QTcpSocket、QTcpServer和QUdpSocket一起使用,以连接到主机或建立服务器。

主机地址用setAddress()设置,用toIPv4Address()、toIPv6Address()或toString()检索。 可以使用protocol()检查类型。

注意:请注意QHostAddress不做DNS查找。 QHostInfo是需要的。

这个类还支持常见的预定义地址:Null、LocalHost、LocalHostIPv6、Broadcast和Any。

枚举 描述
QHostAddress::Null 空地址对象。 相当于QHostAddress()。 参见QHostAddress: isNull()。
QHostAddress::LocalHost IPv4本地主机地址。 相当于QHostAddress(127.0.0.1)。
QHostAddress::localhsotIPv6 IPv6本地主机地址。 相当于QHostAddress(“::1”)。
QHostAddress::Broadcast IPv4广播地址。 相当于QHostAddress(“255.255.255.255”)
QHostAddress::AnyIPv4 IPv4任何地址。 相当于QHostAddress(“0.0.0.0”)。 与此地址绑定的套接字只在IPv4接口上监听。
QHostAddress::AnyIPv6 IPv6任何地址。 相当于QHostAddress(“::”)。 与此地址绑定的套接字只在IPv6接口上监听。
QHostAddress::Any 双栈任意地址。 与此地址绑定的套接字将侦听IPv4和IPv6接口。

 

3. QNetworkInterface

QNetworkInterface类提供了主机的IP地址和网络接口的列表。

QNetworkInterface表示一个连接到正在运行程序的主机的网络接口。 每个网络接口可以包含0个或多个IP地址,每个IP地址可选地与一个网络掩码和/或一个广播地址相关联。 这类三元组的列表可以通过addressEntries()获得。 或者,当网络掩码或广播地址或其他信息不需要时,使用方便的allAddresses()函数只获取活动接口的IP地址。

QNetworkInterface还使用hardwareAddress()报告接口的硬件地址。

并非所有操作系统都支持报告所有特性。 在所有平台中,只有IPv4地址保证被这个类列出。 其中IPv6地址列表仅支持在Windows、Linux、macOS和bsd等操作系统上使用。

  • 这个方便的函数返回主机上找到的所有IP地址。

 
QList<QHostAddress> addrlist = QNetworkInterface::allAddresses();
for(QHostAddress addr : addrlist)                                  
{                                                                  
    qDebug()<<addr.protocol()<<addr.toString();                    
}
  • 返回主机上找到的所有网络接口的列表。 如果失败,它将返回一个没有元素的列表。

 
QList<QNetworkInterface> networkList =  QNetworkInterface::allInterfaces();
for(auto inter : networkList)
{
    if(!inter.isValid())
        continue;
    //输出此网络接口的名称、接口的类型、MAC地址和 在Windows上返回这个网络接口的人类可读的名称(如以太网、本地连接等)
    qDebug()<<inter.name()<<inter.type()<<inter.hardwareAddress()<<inter.humanReadableName();
    //输出网络接口对应的ip地址
    for(auto entrys : inter.addressEntries())
    {
        qDebug()<<entrys.ip();
    }
}

 

4. QNetworkAddressEntry

QNetworkAddressEntry类存储一个由网络接口支持的IP地址,以及它相关的网络掩码和广播地址。

 
//返回IPv4地址和子掩码相关联的广播地址
QHostAddress broadcast() const
//返回网络接口中的IPv4或IPv6地址
QHostAddress ip() const
//返回与IP地址相关联的子网掩码
QHostAddress netmask() const

标签:Qt,QHostInfo,网络,地址,QHostAddress,IP地址,相关,网络接口,IPv4
From: https://www.cnblogs.com/zhuchunlin/p/18321108

相关文章

  • 从零开始:神经网络(1)——什么是人工神经网络
      声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。     人工神经网络(ArtificialNeuralNetwork,简称ANN)是一种模仿生物神经网络结构和功能的计算模型。它由大量的节点(或称神经元)相互连接而成,这些节点通常......
  • 网络安全前景大好,转行这些职位成了“香饽饽”
    网络安全就业前景大数据、人工智能、云计算、物联网、5G等新兴技术的高速发展,蒸蒸日上。但是随之也出现了许多问题,比如:政府单位、企业、个人信息泄露,网络安全问题日益严峻,网络空间安全建设刻不容缓。网络安全人才需求量巨大,人才缺口高达95%,人才输送与人才缺口的比例严重不......
  • Linux 文本文件编辑相关命令简介【Linux 常用命令系列二】
    〇、前言本文介绍了如何通过vim命令,对文本文件进行打开、编辑、保存等相关操作,并通过简单的示例演示了常用用法。一、关于文本文件的操作1.1打开,查看(cat)、编辑(vim)打开文本文件,有查看和编辑两种状态。1.1.1仅查看cat可以使用cat命令,加上文件的绝对路径或者进入目标路......
  • 松下相机相关软件推荐
    松下相机准备工具Ps和Lr官网(https://www.adobe.com/cn/creativecloud/roc/business.html)版本自行选择,我这边提供一下自行用的破解好的,或者你也可以使用破解工具当然有钱还是支持正版破解教程说明链接(https://www.cnblogs.com/FRIM/p/17774124.html)CameraRaw官......
  • 网络运维管理系统,维护企业网络信息安全的管理系统推荐!
    古有烽火传信,今则网络织就天下经纬;网络运维,企业之根本,信息之安全,重于泰山。当今,企业网络已成为企业运营的核心基础设施,其稳定性和安全性直接关系到企业的业务连续性和企业机密信息的保护,因此,选择一款高效、全面的网络运维管理系统对于维护企业网络信息安全至关重要。安企神软......
  • Windows 使用 Visual Studio 2013 编译 paho-mqtt 生成dll lib 文件
    前言全局说明Windows使用VisualStudio2013编译paho-mqtt生成dlllib文件一、说明环境:Windows7旗舰版VisualStudio2013RTMPROCHS二、环境准备2.1安装VisualStudio2013https://www.cnblogs.com/wutou/p/183205322.2安装CMakehttps://www.cnblo......
  • 易优CMS模板标签relevarticle相关文档
    [基础用法]标签:relevarticle描述:通过前3个TAG标签或前3个关键词,检索整站文档标题中含有tag标签或者关键词的相关文档,进行关联。在没有tag标签情况下,就以前3个关键词检索文档标题进行关联。这个标签随着数据量的增加可能会比较影响检索性能。提示:使用该标签之前,必须先安装相关文档......
  • 使用STM32实现简单的网络通信
    概述在本文中,我们将介绍如何使用STM32微控制器实现简单的网络通信。我们将使用STM32Cube软件来配置和编程STM32微控制器。我们将使用TCP/IP协议栈,以便在STM32微控制器与计算机之间进行通信。我们将通过创建一个简单的服务器端和一个客户端来演示网络通信的实现。准备工作在......
  • Qt实现图片拖拽上传过滤文件夹内图片自动搜索列表展示
     1.功能实现支持图片、或者文件夹拖拽上传,会自动获取文件夹中的图片。对拖入的文件做格式判断,不符合格式要求的会不支持拖入,拖入后展示在list列表中,可以进行删除,和上下滚动查看;#ifndefDRAGDROPPIC_H#defineDRAGDROPPIC_H#include<QWidget>#include"ui_DragDropPic.h......
  • python_网络编程_socket
    一、网络编程的基本概念通信协议:internet协议,任何私有网络支持此协议,就可以接入互联网二、七层协议与四层协议从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层三、掌握TCP、IP协议ip协议是整个TCP、IP协议族的核心IP地址就是会联网上计算......