Qt网络编程:QNetworkInterface

一、描述

QNetworkInterface 代表一个连接到运行程序的主机网络接口。每个网络接口可能包含零个或多个 IP 地址,每个 IP 地址都可选地与网络掩码和/或广播地址相关联。

此类封装的数据如下:

 

二、类型成员

1、QNetworkInterface::InterfaceFlag:指定与网络接口关联的标志。

  • IsUp:网络接口处于活动状态。
  • IsRunning:网络接口已分配资源。
  • CanBroadcast:网络接口工作在广播模式。
  • IsLoopBack:网络接口是一个环回接口。即它是一个虚拟接口,其目的地是主机本身。
  • IsPointToPoint:网络接口是一个点对点接口。即它可以直接到达一个单独的其他地址。
  • CanMulticast:网络接口支持组播。

注意,一个网络接口不能既是基于广播的又是点对点的。

2、QNetworkInterface::InterfaceType:此接口的硬件类型(OSI的第一层:物理层)。不在下面列出的接口类型中的接口类型通常会列为未知。

  • Unknown:接口类型无法确定或不是其他列出的类型之一。
  • Loopback:虚拟环回接口,分配了环回 IP 地址 (127.0.0.1, ::1)。
  • Virtual:虚拟的接口类型,不是任何其他可能的类型。
  • Ethernet:IEEE 802.3 以太网接口。
  • Wifi:IEEE 802.11 Wi-Fi 接口。
  • Ieee80211:WiFi 的别名。
  • CanBus:ISO 11898 控制器局域网总线接口。
  • Fddi:ANSI X3T12 光纤分布式数据接口,一种光纤局域网。
  • Ppp:点对点协议接口,通过较低的传输层(通常通过无线电或物理线路串行)在两个节点之间建立直接连接。
  • Slip:串行线路互联网协议接口。
  • Phonet:使用 Linux Phonet socket系列的接口,用于与蜂窝调制解调器通信。
  • Ieee802154:IEEE 802.15.4 个人区域网络接口,6LoWPAN 除外。
  • SixLoWPAN:6LoWPAN(低功耗无线个人区域网络上的 IPv6)接口,通常用于网状网络。
  • Ieee80216:IEEE 802.16 无线城域网。
  • Ieee1394:IEEE 1394 接口(又名“FireWire”)。

三、成员函数

1、QList<QNetworkAddressEntry> addressEntries()

返回此接口拥有的 IP 地址列表及其关联的网络掩码和广播地址。

如果不需要网络掩码或广播地址或其他信息,则可以调用 allAddresses() 函数以仅获取活动接口的 IP 地址。

foreach(auto & interface,QNetworkInterface::allInterfaces()) //遍历每一个网络接口
{
foreach(const QNetworkAddressEntry & entry,interface.addressEntries()) //遍历每一个IP地址条目
{
qDebug()<<"IP地址:"<<entry.ip().toString();
qDebug()<<"子网掩码:"<<entry.netmask().toString();
qDebug()<<"广播地址:"<<entry.broadcast().toString();
}
}

2、[static] QList<QHostAddress> allAddresses()

返回在主机上找到的所有 IP 地址。

foreach (const QHostAddress & addr, QNetworkInterface::allAddresses())
{
qDebug()<<addr;
}

 

 

3、[static] QList<QNetworkInterface> allInterfaces()

返回主机上找到的所有网络接口的列表。

foreach (const QNetworkInterface & interface, QNetworkInterface::allInterfaces())
{
qDebug()<<interface;
}

 

 

4、QNetworkInterface::InterfaceFlags flags()

返回与此网络接口关联的标志。

5、QString hardwareAddress()

返回此接口的低级硬件地址。 在以太网接口上,这将是字符串表示的 MAC 地址,用冒号分隔。其他接口类型可能具有其他类型的硬件地址。(见上图)

6、QString humanReadableName()

可读名称。如果可以确定名称,则返回此网络接口在 Windows 上的可读名称,例如“本地连接”。如果不能,此函数返回与 name() 相同的值。可读名称是用户可以在 Windows 控制面板中修改的名称,因此它可能会在程序执行过程中更改。在 Unix 上,此函数当前始终返回与 name() 相同的值,因为 Unix 系统不存储可读名称的配置。

foreach (const QNetworkInterface & interface, QNetworkInterface::allInterfaces())
{
qDebug()<<interface.humanReadableName()<<interface.name();
}

 

7、int index()

如果已知,则返回接口系统索引。这是操作系统分配的一个整数,用于标识此接口,它通常不会更改。它与 IPv6 地址中的作用域 ID 字段相匹配。如果索引未知,则此函数返回 0。

8、[static] QNetworkInterface interfaceFromIndex(int index)

返回内部 ID 为index的主机网络接口对象。

9、[static] QNetworkInterface interfaceFromName(const QString &name)

返回名为 name 的主机网络接口对象。

10、[static] int interfaceIndexFromName(const QString &name)

返回名称为 name 的接口的索引,如果没有该名称的接口,则返回 0。

11、[static] QString interfaceNameFromIndex(int index)

返回索引为 index 的接口的名称,如果没有具有该索引的接口,则返回空字符串。

12、bool isValid()

对象是否包含有关网络接口的有效信息。

13、int maximumTransmissionUnit()

返回此接口上的最大传输单元(如果已知),否则返回 0。

14、QString name()

返回此网络接口的名称。在 Unix 系统上,这是一个包含接口类型和可选序列号的字符串,例如“eth0”、“lo”或“pcn0”。 在 Windows 上,它是用户无法更改的内部 ID。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

版权声明:本文为CSDN博主「友善啊,朋友」的原创文章

原文链接:https://blog.csdn.net/kenfan1647/article/details/117969687

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中进行网络编程,主要涉及到的头文件有**<QTcpSocket>和<QTcpServer>**。以下是一些关于Qt网络编程的信息: 1. **客户端编程**: - **创建QTcpSocket对象**:用于建立与服务器的连接。 - **连接至服务器**:使用`connectToHost()`函数连接到指定的服务器。 - **发送数据**:通过`write()`函数来发送数据到服务器。 - **读取数据**:使用`readAll()`函数来接收来自服务器的数据。 - **断开连接**:完成数据传输后,需要断开与服务器的连接。 2. **服务器端编程**: - **创建QTcpServer对象**:用于监听客户端的连接请求。 - **绑定本地信息**:通过调用`listen()`函数并指定地址和端口来开始监听。 - **等待客户端连接**:当有新的连接请求时,`newConnection()`信号会被触发。 - **读取和发送数据**:与客户端类似,服务器也需要读取和发送数据。 - **断开连接**:结束客户端的连接。 3. **头文件引入**: - 对于客户端,需要包含`#include <QTcpSocket>`。 - 对于服务器,需要包含`#include <QTcpServer>`。 4. **项目文件配置**: - 在项目的`.pro`文件中,需要添加`QT += network`以启用网络模块。 5. **数据流操作**: - 在进行数据收发时,可以使用`QDataStream`类来处理数据流,它提供了一种方便的方式来序列化和反序列化数据。 综上所述,这些是Qt网络编程的基本概念和步骤。在实际开发中,还需要考虑到错误处理、多线程管理以及安全性等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值