网络和连接

Qt 提供用于高级 低级网络通信的类、用于 web 集成的类、及用于进程间通信的类。

对于高级网络流量, Qt Network 提供仅展示高级类和函数,覆盖所用操作的抽象层。Qt Network 也可以处理像 TCP 和 UDP 的低级协议。类 QTcpSocket and QUdpSocket 使开发者能够使用 TCP 或 UDP 协议发送和接收消息。名称解析采用 QHostInfo . QHostInfo 被调用,先于创建网络连接采用 QTcpSocket or QUdpSocket 。通过代理过滤和重新分配网络流量,可以采用 QNetWorkProxy 类进行处理。

Qt Network 还提供 承载管理 API。它拥有可以启动 (或停止) 网络接口,并在访问点之间漫游的函数。无论如何,它不关心网络配置本身。平台需要关心这。

Qt WebEngine 提供基于 Chromium 的 Web 引擎,允许在应用程序中使用 Web 内容。 Qt WebEngine 能渲染 HTML5、XHTML 和 SVG 文档,及执行 Javascript。

Qt 还提供功能为 进程间通信 (IPC)。类 QProcess 被用于启动外部程序。 Qt D-Bus 提供对 D-Bus 的支持、进程间通信及远程过程调用机制。它主要通过被称为 Bus (总线) 的中央服务器应用程序,进行通信。无论如何,让应用程序直接相互通信也是可能的。 QSharedMemory 提供通过多线程 多进程,对共享内存段的访问。无论如何,单个进程独占锁定共享内存也是可能的。

网络通信

Qt 支持广泛网络通信,重点是 HTTP、TCP 及 UDP。

在 HTTP 级别, Qt Network 模块提供网络访问 API,主要包括 QNetworkRequest , QNetworkAccessManager ,和 QNetworkReply 。简而言之, QNetworkRequest 类似于 HTTP 请求,其被传递给 QNetworkAccessManager 以发送线上请求;此类返回 QNetworkReply ,其启用 HTTP 回复剖析。网络访问 API 在内部使用以下提及的套接字类 (对于 TCP 和 SSL)。

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

为凭借 SSL 进行安全通信,Qt Network 提供广泛的类,除了中心 QSslSocket , e.g. QSslCertificate , QSslConfiguration and QSslError 。Qt 唯一支持的 SSL 后端是 OpenSSL,它需要单独安装。

对于移动设备,Qt Network 提供 承载管理 API 去跟踪连接状态 (如:获取在线/离线状态,或是在使用 Wifi 还是 3G 的有关通知)。

Qt 还提供 HTTP 支持在 QML 通过明确使用 HTTP 凭借 XmlHttpRequest ,或通过透明使用 HTTP URL 在如图像源中。

相关话题:

WebSockets

An alternative to direct TCP or HTTP communication is to use the WebSocket protocol ( RFC 6455 )。它是 TCP 协议之上的双向通信协议,以利用现有 Web 基础设施,无需创建额外基于客户端-服务器的通信。 Qt WebSockets 模块提供 QML 和 C++ API,除演示其用法的几个范例外。

万维网 WWW 支持

Qt makes it easy to embed web content into your Qt application using features of the Qt WebEngine layout engine. The Qt WebEngine module equips Qt with support for a broad range of standard web technologies that make it possible to embed HTML content styled with CSS and scripted with JavaScript into your Qt application. Qt WebEngine 促进集成传统基于 QWidget 的桌面应用程序,及嵌入 Qt Quick QML 应用程序。

更多信息,见 集成 Web 内容 .

进程间通信

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 类提供基于本地套接字的服务器。此类使接受传入本地套接字连接成为可能。

相关话题:

串口通信

Qt Serial Port 模块提供为透过串口进行通信 (使用 RS-232 标准) 的 C++ API。它与物理端口,及模拟这些端口的驱动程序一起工作。串口仿真程序范例包括虚拟 COM 端口、com0com 仿真程序及 Bluetooth SPP。

此模块旨在使串口编程更轻松和可移植。从 Qt 5.2 起,支持 Windows , macOS ,和 Linux .

相关话题:

蓝牙通信

Qt Bluetooth 模块为短距离 (小于 100 米) 无线协议提供 C++ 和 QML API,协议开发 蓝牙特别兴趣组 。 它提供经典蓝牙和低功耗蓝牙特征。

相关话题:

NFC 近场通信

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

相关话题: