获取本网络信息相关接口
接口说明:
QHostInfo类为主机信息,为主机名查找提供静态函数
QHostAddress类为主机地址类,管理IPV4或IPV6地址信息。
QNetworkInterface类为网络接口类,提供主机IP地址和网络接口的列表。
QNetworkAddressEntry类为网络地址实体,存储网络接口支持的一个IP地址及其关联的网络掩码和广播地址
示例
使用接口获取本机网络信息。
基于UDP的网络广播程序加粗样式
1、UDP介绍
用户数据报协议(User Data Protocol,UDP)是一种简单轻量级、不可靠、面向数据报、无连接的传输协议,可以应用在可靠性不是十分重要的场合,如短消息、广播信息等。
适合应用的情况有以下几种:
- 网络数据大多为短消息。
- 拥有大量客户端。
- 对数据安全性无特殊要求。
- 网络负担非常重,但对响应速度要求高。
2、UDP工作原理
如下图所示,UDP客户端向UDP服务器发送一定长度的请求报文,报文大小的限制与各系统的协议实现有关,但不得超过其下层IP规定64KB;UDP服务器同样以报文形式做出响应。如果服务器未收到此请求,客户端不会进行重发,因此报文的传输是不可靠的
3、UDP编程模型
下面介绍基于UDP的经典编程模型,UDP客户端与服务器间的交互时序如下图所示。
可以看出,在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发出数据 报。类似地,服务器也不从客户端接收连接,只负责调用接收函数,等待来自某客户端的数据到达。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFUwYKqH-1685953741160)(C:\Users\Thunder\AppData\Roaming\Typora\typora-user-images\image-20220905111703125.png)]
4、接口解析
QUdpSocket类提供udp套接字,QUdpSocket是QAbstractSocket的一个类,它允许程序发送和接收udp数据报。
//判断是否有数据达到
bool hasPendingDatagrams() const
//获取数据报的长度
qint64 pendingDatagramSize() const
//读取接收到的数据(address和port为返回的发送主机的地址和端口)
qint64 readDatagram(char *data, qint64 maxSize, QHostAddress *address =
Q_NULLPTR, quint16 *port = Q_NULLPTR)
//两种发送数据报的方法(发送给地址为address,端口为port的主机)
//size最大支持8192个字节,超出则返回-1. 建议size不超过512个字节
qint64 writeDatagram(const char *data, qint64 size, const QHostAddress &address,
quint16 port)
qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host,
quint16 port)
//信号:当收到消息时发送该信号
[signal] void readyRead()
5、案例
实现一个客户端,一个服务端。 服务端可以定时向客户端发送消息, 客户端负责接收消息并显示。 支 持多个服务端发送消息。