Qt:网络和连接

1060 篇文章 295 订阅

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

对于高级网络流量,Qt Network在使用的操作上提供了一个抽象层,仅显示高级类和功能。Qt Network还可以处理较低级别的协议,比如TCP和UDP。QTcpSocketQUdpSocket之类的类使开发人员可以使用TCP或者UDP协议发送和接收消息。名称解析由QHostInfo完成。在使用QTcpSocket或者QUdpSocket创建网络连接之前,将调用QHostInfo。可以通过QNetWorkProxy类处理代理过滤以及重新分配网络流量

Qt还提供了进程间通信IPC的功能,QProcess类用于启动外部程序,Qt D-Bus提供对D-Bus的支持,D-Bus是一种进程间通信和远程过程调用机制。它主要通过称为总线的中央服务器应用程序进行通信。但是,也可以让应用程序直接相互通信。QSharedMemory通过多个线程和进程提供对共享内存段的访问。但是,单个进程也可以排他的锁定该共享内存

网络通信

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

在HTTP级别,Qt Network模块提供了网络访问API。主要由QNetworkRequestQNetworkAccessManagerQNetworkReply组成。简而言之,QNetworkRequest类似于HTTP请求,该请求被传递给QNetworkAccessManager以在线发送请求。此类返回一个QNetworkReply,它可以解析HTTP答复。网络访问API在内部使用下面提到的套接字类(对于TCP和SSL)。

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

为了通过SSL进行安全通信,Qt Network除了中央QSslSocket外还提供了广泛的类,例如QSslCertificateQSslConfigurationQSslError。Qt中唯一受支持的SSL后端是OpenSSL,需要单独安装。

Qt还通过通过XmlHttpRequest显式使用HTTP或在例如图像源中透明地使用HTTP URL在QML中提供HTTP支持。

相关话题:

进程间通信

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

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

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

在Qt的d-Bus模块模块是一个跨平台的库,可以通过d-Bus协议来实现IPC。它将Qt的信号和槽机制控制到IPC级别,从而允许一个进程发出的信息连接到另一进程的槽

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

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

相关话题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值