网络和连接

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

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

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 ,如 QSslCertificate , QSslConfiguration and QSslError 。Qt 唯一支持的 SSL 后端是 OpenSSL,它需要单独安装。

Qt also offers HTTP support in QML by either using HTTP explicitly via XmlHttpRequest, or by transparently using HTTP URLs in e.g. Image sources.

相关话题:

进程间通信

Qt提供了几种在 Qt 应用程序中实现 IPC (进程间通信) 的办法。

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

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

Qt D-Bus 模块是可以使用 D-Bus 协议去实现 IPC (进程间通信) 的跨平台库。它扩展 Qt 的 信号和槽 机制到 IPC 级别,允许由某一进程发射的信号能被连接到另一进程的槽。

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

QLocalSocket 类提供本地套接字。在 Windows,这是命名管道;在 Unix,这是本地域套接字。 QLocalServer 类提供基于本地套接字的服务器。此类使接受传入本地套接字连接成为可能。

相关话题: