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 模块的大部分功能。

相关推荐
newsxun1 分钟前
从一条国道,到一个时代符号——申晨案例解析:如何打造公路文旅现象级IP「此生必驾318」
网络·网络协议·tcp/ip
Bruce_Liuxiaowei25 分钟前
基于抓包分析的组播视频流故障排查与解决
网络·网络协议·wireshark·信号处理
wniuniu_30 分钟前
增加依据。。
服务器·网络·数据库
爱敲代码的小鱼37 分钟前
事务核心概念与隔离级别解析
java·开发语言·数据库
KKKlucifer42 分钟前
数据安全服务的技术深耕与场景适配:行业实践全景解析
网络·安全
小冷coding1 小时前
【Java】遇到微服务接口报错导致系统部分挂掉时,需要快速响应并恢复,应该怎么做呢?如果支付服务出现异常如何快速处理呢?
java·开发语言·微服务
星火开发设计1 小时前
二维数组:矩阵存储与多维数组的内存布局
开发语言·c++·人工智能·算法·矩阵·函数·知识
夜勤月1 小时前
彻底终结内存泄漏与悬挂指针:深度实战 C++ 智能指针底层原理与自定义内存池,打造稳如泰山的系统基石
开发语言·c++
2501_915909061 小时前
设置了 SSL Pinning 与双向 TLS 验证要怎么抓包
网络·网络协议·ios·小程序·uni-app·iphone·ssl
HeisenbergWDG1 小时前
线程实现runnable和callable接口
java·开发语言