Qt Network 模块中的函数详解


🌟 Qt Network 模块核心功能及其函数详解

1. 基础 I/O 和抽象 (QAbstractSocket, QHostAddress)

核心类 (Class) 功能描述 常用函数 (Function) 及作用
QAbstractSocket 套接字基类。 提供了所有套接字操作的通用接口,如连接、断开、读写数据。实际使用时通常使用其子类 QTcpSocketQUdpSocket QAbstractSocket::open() : 继承自 QIODevice,用于打开套接字。 QAbstractSocket::close() : 关闭套接字连接。 QAbstractSocket::write() : 发送数据(写入缓冲区)。 QAbstractSocket::readAll() : 读取所有可用数据。 QAbstractSocket::state() : 获取当前连接状态。 信号 readyRead() : 有新数据到达时发射。 信号 disconnected(): 连接关闭时发射。
QHostAddress IP 地址抽象。 用于存储和操作 IPv4 或 IPv6 地址。 QHostAddress::setAddress() : 设置 IP 地址(字符串或数值)。 QHostAddress::toString() : 将 IP 地址转换为标准字符串格式。 QHostAddress::Any / QHostAddress::LocalHost: 静态常量,表示任意地址或本地环回地址。

2. TCP 通信 (Client/Server)

核心类 (Class) 功能描述 常用函数 (Function) 及作用
QTcpSocket TCP 客户端套接字。 提供可靠的、面向连接的数据流通信。 QTcpSocket::connectToHost() : 连接到指定的 IP 地址和端口。 QTcpSocket::disconnectFromHost() : 发起连接断开请求。 QTcpSocket::waitForConnected() : 阻塞等待连接成功(非推荐在 GUI 线程使用)。 QTcpSocket::peerAddress() / peerPort(): 获取远端地址和端口。
QTcpServer TCP 服务器套接字。 监听传入的 TCP 连接请求。 QTcpServer::listen() : 开始在指定地址和端口监听连接。 QTcpServer::isListening() : 检查服务器是否正在监听。 QTcpServer::nextPendingConnection() : 返回下一个挂起的 QTcpSocket 对象。 信号 newConnection(): 有新的客户端连接时发射。

3. HTTP/Web 通信 (高级客户端)

核心类 (Class) 功能描述 常用函数 (Function) 及作用
QNetworkAccessManager 高级网络请求管理器。 用于发送 HTTP/HTTPS 请求,如 GET、POST、PUT 等。它是无状态的。 QNetworkAccessManager::get() / post() / put() : 发送对应的 HTTP 请求,返回一个 QNetworkReply 指针。 信号 finished(QNetworkReply*): 任何请求完成后发射。
QNetworkRequest 网络请求信息封装。 用于设置请求的 URL、头部信息等。 QNetworkRequest::setUrl() : 设置请求的目标 URL。 QNetworkRequest::setRawHeader(): 设置自定义的 HTTP 头。
QNetworkReply 网络请求响应对象。 封装了服务器的响应数据、HTTP 状态码等,是一个特殊的 QIODevice QNetworkReply::readAll() : 读取响应体数据。 QNetworkReply::error() : 获取请求发生的错误码。 QNetworkReply::attribute() : 获取 HTTP 状态码等属性。 QNetworkReply::close(): 关闭响应并释放资源。

4. DNS 和主机信息

核心类 (Class) 功能描述 常用函数 (Function) 及作用
QHostInfo 主机信息查找。 用于进行 DNS 查找(域名解析)。 QHostInfo::lookupHost() : 异步发起域名解析请求。 QHostInfo::fromName() : 阻塞式发起域名解析请求(不推荐在 GUI 线程使用)。 信号 finished(const QHostInfo &): 异步查找完成时发射。

🛠️ Qt Network 模块常用全局函数

与 Core 模块类似,Qt Network 也有少量全局函数,但多数功能仍集中在类方法中。

函数名 描述 作用
QSslSocket::sslLibraryBuildVersionString() SSL 库版本。 静态函数,返回编译 Qt 时使用的 SSL/TLS 库的版本信息(如 OpenSSL)。 用于调试和安全检查。
QSslSocket::supportsSsl() SSL 支持检查。 静态函数,检查当前 Qt 版本是否已配置 SSL/TLS 支持。 用于判断是否能进行 HTTPS 或安全 TCP 连接。

总结:

在 Qt Network 模块中,编程模式通常是:

  1. 客户端 TCP: 使用 QTcpSocket,调用 connectToHost(),连接后等待 readyRead() 信号进行读写。
  2. 服务器 TCP: 使用 QTcpServer,调用 listen(),连接后等待 newConnection() 信号来获取新的 QTcpSocket
  3. HTTP/Web: 使用 QNetworkAccessManager,调用 get()/post(),等待 finished() 信号来处理 QNetworkReply

理解这些核心类的成员函数和信号,就掌握了 Qt Network 模块的大部分功能。

相关推荐
Quz3 天前
QML Hello World 入门示例
qt
xcyxiner6 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner7 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner7 天前
DicomViewer (添加模型类)3
qt
xcyxiner8 天前
DicomViewer (目录调整) 2
qt
xcyxiner8 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00610 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术10 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园10 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob10 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio