Networking and Connectivity

Qt 提供了高级和低级网络通信的类, Web 集成的类以及进程间通信的类.

对于高级网络流量, Qt Network 在所使用的操作上提供了一个抽象层, 仅显示高级类和函数. Qt Network 还可以处理较低级别的协议, 例如 TCP 和 UDP. QTcpSocketQUdpSocket 可以使开发人员使用 TCP 或 UDP 协议发送和接收消息. QHostInfo 用于域名解析. 在使用 QTcpSocketQUdpSocket 创建网络连接前调用 QHostInfo. 使用代理过滤和重新分配网络流量可以由 QNetWorkProxy 处理.

Qt Network 还提供 Bearer Management API. 它具有可以启动或停止网络接口以及在接入点之间漫游的功能. 然而, 它本身并不关心网络配置. 平台需要解决这个问题.

Qt WebEngine 提供了一个基于 Chromium 的 web 引擎, 让你的应用程序使用 Web 内容. Qt WebEngine 可以渲染 HTML5, XHTML, SVG 文档, 并执行 Javascript.

Qt 还提供进程间通信 (IPC) 功能. QProcess 启动外部程序. Qt D-Bus 支持 D-Bus, 这是一种进程间通信和远程过程调用机制. 它主要通过称为总线的中央服务器应用程序通信. 然而, 也可以让应用程序直接相互通信. QSharedMemory 提供多个线程和进程对共享内存段的访问. 然而, 单个进程也可以独占地锁定共享内存.

Network Communication

Qt 支持广泛的网络通信, 重点是 HTTP, TCP, and UDP.

在 HTTP 层面, the Qt Network 模块提供了网络访问API, 主要包括 QNetworkRequest, QNetworkAccessManager, QNetworkReply. 简而言之, QNetworkRequest 类似于 HTTP 请求, 它被传递到 QNetworkAccessManager 以在线发送请求; 这个类返回一个 QNetworkReply, 它可以解析 HTTP 回复. 网络访问 API 在内部使用下面提到的套接字类 (对于 TCP 和 SSL).

对于套接字级别的通信, 应使用 QTcpSocket, QUdpSocket, QSslSocket. 这些类通过 waitFor* 方法提供同步 API 以及异步 API; 如果可能 (即. 如果事件循环正在运行), 应始终首选异步 API. Qt 还提供 QTcpServer 启用 TCP 通信的服务器端部分. 注意, Qt 中没有 HTTP 服务器类.

为了通过 SSL 进行安全通信, Qt Network 与中心 QSslSocket 一起提供了广泛的类, 如. QSslCertificate, QSslConfiguration, QSslError. Qt 中唯一支持 SSL 的后端是 OpenSSL, 需要单独安装.

对于移动设备, Qt Network 提供 bearer management API, 跟踪连接状态 (如. 获取有关在线/离线状态或是否使用 Wifi 或 3G 的通知).

Qt 还在 QML 中提供 HTTP 支持, 使用 XmlHttpRequest 显式使用 HTTP, 或者透明地使用 HTTP URL, 如. 图片源.

相关话题:

WebSockets

直接 TCP 或 HTTP 通信的替代方法是使用 WebSocket 协议 (RFC 6455). 它是 TCP 协议之上的双向通信协议, 可利用现有的 Web 基础设施, 而无需创建额外的基于客户端-服务器的通信. Qt WebSockets 模块提供了 QML 和 C++ API, 以及几个演示其使用的示例.

World Wide Web Support

Qt 使用 Qt WebEngine 布局引擎的功能可以轻松地将 Web 内容嵌入到 Qt 应用程序中. Qt WebEngine 模块使 Qt 能够支持广泛的标准 Web 技术, 从而可以将使用 CSS 设计样式并使用 JavaScript 编写脚本的 HTML 内容嵌入到您的 Qt 应用程序中. Qt WebEngine 有助于与传统的基于 QWidget 的桌面应用程序集成以及嵌入到 Qt Quick QML 应用程序中.

详见 Integrating Web Content.

Inter-Process Communication

Qt 提供了多种在 Qt 应用程序中实现进程间通信 (IPC) 的方法.

跨平台的 Qt Network 模块提供了使网络编程可移植且简单的类。 它提供使用特定应用程序级协议进行通信的高级类 (如., QNetworkAccessManager, QFtp), 和用于实现协议的低级类 (如., QTcpSocket, QTcpServer, QSslSocket).

跨平台共享内存类 QSharedMemory 提供对操作系统共享内存实现的访问. 它允许多个线程和进程安全地访问共享内存段. 此外, QSystemSemaphore 控制对系统共享资源的访问, 以及进程之间的通信.

Qt D-Bus 模块是一个跨平台库, 可用于使用 D-Bus 协议实现 IPC. 它将 Qt 的 信号和槽 机制扩展到 IPC 级别, 允许一个进程发出的信号连接到另一进程中的槽函数.

跨平台类 QProcess 用于将外部程序作为子进程启动, 并与它们通信. 它提供了用于监视和控制子进程状态的API. QProcess 通过继承 QIODevice 来访问子进程的输入/输出通道.

QLocalSocket 提供本地套接字. 在 Windows 上, 这是一个命名管道; 在 Unix 上, 这是一个本地域套接字. QLocalServer 提供基于本地套接字的服务器. 此类可以接受传入的本地套接字连接.

相关话题:

Serial Port Communication

Qt Serial Port 模块提供了一个 C++ API, 使用 RS-232 标准通过串行端口通信. 它适用于物理端口以及模拟这些端口的驱动程序. 串行端口仿真器的示例包括虚拟 COM 端口, com0com 仿真器和蓝牙 SPP.

这个模块旨在使串行端口编程变得更加容易和便携. 从 Qt 5.2 开始, 它在 Windows, macOS, Linux 上受支持.

相关话题:

Bluetooth Communication

Qt Bluetooth 模块为Bluetooth Special Interest Group开发的短距离 (小于 100 米) 无线协议提供 C++ 和 QML API. 它提供经典的蓝牙和蓝牙低功耗功能.

相关话题:

Near Field Communication

Qt NFC 模块为 NFC Forum 的极短距离 (小于 20 厘米) 无线协议提供 C++ 和 QML API.

相关话题: