一、前言
前文主要讲到了网络编程的一些概念,主要是包含网络编程中涉及的传输层TCP和UDP两种协议的概念和区别,以及在文章最后提及到了Qt提供的网络编程的模块Qt NetWork模块和相关的类。这篇文章将接着上述内容继续向下陈述,其中将拆分为四个内容,分别是主机信息查询、TCP通信、UDP通信和基于HTTP的网络应用程序,本章先行讲述第一个内容——《主机信息查询》。
对于前文的网络编程的一些概念的内容,可自行查看文章:C++/Qt 网络-CSDN博客
二、主机信息查询
使用QHostInfo类和QNetworkInterface类可以获取主机的一些网络信息,如IP地址和MAC地址,这是网络通信应用需要获取的基本信息,本文就介绍这两个类的使用方法。
1、QHostInfo类和QNetworkInterface类
QHostInfo类可以根据主机名获取主机的IP地址,或者通过IP地址获取主机名。QHostInfo类的静态函数localHostName()可获取本机的主机名,静态函数fromName()可以通过主机名获取IP地址。QHostInfo类的主要接口函数如表所示,表中列出了函数原型,但是省略了参数中的const关键字。
类别 | 函数原型 | 作用 |
公共函数 | QList<QHostAddress> addresses() | 返回与hostName()对应主机关联的IP地址列表 |
HostInfoError error() | 如果主机查找失败,返回失败类型 | |
QString erroeString() | 如果主机查找失败,返回错误描述字符串 | |
QString hostName() | 返回通过IP地址查找到的主机名 | |
int lookupId() | 返回本次查找的Id | |
静态函数 | void abortHostLookup(int id) | 中断主机查找 |
QHostInfo fromName(QString &name) |
返回指定主机名的IP地址 | |
QString localDomainName() | 返回本机域名系统(DNS)域名 | |
QString localHostName() | 返回本机主机名 | |
int lookupHost(QString &name, QObject *receive,char *member) |
以异步方式根据主机名查找主机的IP地址,并返回一个表示本次查找的ID,可用作abortHostLookup()函数的参数 |
QNetworkInterface类可以获得运行程序的主机的所有IP地址和网络接口列表,静态函数allInterfaces()返回主机上所有的网络接口列表,一个网络接口可能包含多个IP地址,每个IP地址与掩码或广播地址关联。如果无需知道子网掩码和广播地址,使用静态函数allAddresses()可以获得主机上所有IP地址的列表。QNetworkInterface类的主要接口函数如表所示,表中列出了函数原型,但是省略了参数中的const关键字。
类别 | 函数原型 | 作用 |
公共函数 | QList<QNetworkAddressEntry> addressEntri |