当前位置: 首页 > news >正文

Qt基础007(Tcp网络编程)

文章目录

      • QTcp服务器的关键流程
      • QTtcp客户端的关键流程
      • TCP协议
      • Socket

QTcp服务器的关键流程

工程建立,需要在.pro加入网络权限
在这里插入图片描述
创建一个基于 QTcpServer 的服务端涉及以下关键步骤:

  1. 创建并初始化 QTcpServer 实例

    • 实例化 QTcpServer 。

    • 调用 listen 方法在特定端口监听传入的连接。

  2. 处理新连接

    • 为 newConnection 信号连接一个槽函数。

    • 在槽函数中,使用 nextPendingConnection 获取 QTcpSocket 以与客户端通信。

  3. 读取和发送数据

    • 通过连接 QTcpSocket 的 readyRead 信号来读取来自客户端的数据。

    • 使用 write 方法发送数据回客户端。

  4. 关闭连接

    • 在适当的时候关闭 QTcpSocket 。

示例代码可能如下:

class MyServer : public QObject {Q_OBJECTpublic:MyServer() {QTcpServer *server = new QTcpServer(this);connect(server, &QTcpServer::newConnection, this,&MyServer::onNewConnection);server->listen(QHostAddress::Any, 1234);}private slots:void onNewConnection() {QTcpSocket *clientSocket = server->nextPendingConnection();connect(clientSocket, &QTcpSocket::readyRead, this,&MyServer::onReadyRead);// ...}void onReadyRead() {QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());// 读取数据QByteArray data = clientSocket->readAll();// 处理数据// ...}
};

确保在使用 QTcpServer 和 QTcpSocket 时妥善处理网络错误和异常情况。

QTtcp客户端的关键流程

工程建立,需要在.pro加入网络权限
在这里插入图片描述
创建一个基于 QTcpSocket 的Qt客户端涉及以下步骤:

  1. 创建 QTcpSocket 实例

    • 实例化 QTcpSocket 。
  2. 连接到服务器

    • 使用 connectToHost 方法连接到服务器的IP地址和端口。
  3. 发送数据到服务器

    • 使用 write 方法发送数据。
  4. 接收来自服务器的数据

    • 为 readyRead 信号连接一个槽函数来接收数据。
  5. 关闭连接

    • 关闭 QTcpSocket 连接。

示例代码如下:

class MyClient : public QObject {Q_OBJECTpublic:MyClient() {QTcpSocket *socket = new QTcpSocket(this);connect(socket, &QTcpSocket::readyRead, this, &MyClient::onReadyRead);socket->connectToHost("server_address", 1234);}private slots:void onReadyRead() {QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());QByteArray data = socket->readAll();// 处理接收到的数据// ...}
};

TCP协议

TCP(传输控制协议)是一种广泛使用的网络通信协议,设计用于在网络中的计算机之间可靠地传输数

据。它是互联网协议套件的核心部分,通常与IP(互联网协议)一起使用,合称为TCP/IP。以下是TCP协

议的一些基本特点:

  1. 面向连接:在数据传输之前,TCP 需要在发送方和接收方之间建立一个连接。这包括三次握手过

程,确保两端都准备好进行数据传输。

  1. 可靠传输:TCP 提供可靠的数据传输服务,这意味着它保证数据包准确无误地到达目的地。如果发

生数据丢失或错误,TCP 会重新发送数据包。

  1. 顺序控制:TCP 保证数据包的传输顺序。即使数据包在网络中的传输顺序被打乱,接收方也能按照

正确的顺序重组这些数据。

  1. 流量控制:TCP 使用窗口机制来控制发送方的数据传输速率,以防止网络过载。这有助于防止接收

方被发送方发送的数据所淹没。

  1. 拥塞控制:TCP 还包括拥塞控制机制,用来检测并防止网络拥塞。当网络拥塞发生时,TCP 会减少

其数据传输速率。

  1. 数据分段:大块的数据在发送前会被分割成更小的段,以便于传输。这些段会被独立发送并在接收

端重新组装。

  1. 确认和重传:接收方对成功接收的数据包发送确认(ACK)信号。如果发送方没有收到确认,它会

重传丢失的数据包。

  1. 终止连接:数据传输完成后,TCP 连接需要被正常关闭,这通常涉及到四次挥手过程。

TCP 适用于需要高可靠性的应用,如网页浏览、文件传输、电子邮件等。然而,由于它的这些特性,TCP

在处理速度上可能不如其他协议(如UDP)那么快速。

Socket

Socket 不是一个协议,而是一种编程接口(API)或机制,用于在网络中实现通信。Socket 通常在应用层和传输层之间提供一个端点,使得应用程序可以通过网络发送和接收数据。它支持多种协议,主要是TCP 和 UDP。

以下是 Socket 的一些基本特点:

  • 类型:有两种主要类型的 Sockets —— TCP Socket(面向连接,可靠)和 UDP Socket(无连接,不可靠)。

  • 应用:在各种网络应用中广泛使用,如网页服务器、聊天应用、在线游戏等。

  • 编程语言支持:大多数现代编程语言如 Python, Java, C++, 等都提供 Socket 编程的支持。

  • 功能:提供了创建网络连接、监听传入的连接、发送和接收数据等功能。

  • QT: 在QT组件中,QTcpSocket用来管理和实现TCP Socket通信,QUdpSocket用来管理和实现UDP Socket通信

总之,Socket 是实现网络通信的基础工具之一,它抽象化了网络层的复杂性,为开发者提供了一种相对简单的方式来建立和管理网络连接。

小贴士:

TCPServer类关于监听,连接,发送,接受的API

TCPServer在网络通信中常用的信号

TCPScoket在QT实现Socket常用的API

TCPScoket在QT实现Socket常用的信号

EditText的内容读取方法,内容写入方法,在特定行写入特点颜色的方法

相关文章:

  • 32单片机——GPIO的工作模式
  • Redis的string类型使用
  • Redis核心技术知识点全集
  • 第五章:5.3 ESP32物联网应用:阿里云IoT平台与腾讯云IoT平台的数据上传与远程控制
  • KafkaSpark
  • 初始SpringBoot
  • Java | 深拷贝与浅拷贝工具类解析和自定义实现
  • 数据预处理:前缀和算法详解
  • Vue3 + TypeScript 实现二维码生成与展示
  • poi生成横向文档以及复杂表头
  • 驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
  • 欧拉计划 Project Euler54(扑克手牌)题解
  • MySQL运算符
  • stack和queue的学习
  • 【实证分析】ESG发展对企业新质生产力影响的研究—来自中国A股上市企业的经验
  • ROS第十二梯:ros-noetic和Anaconda联合使用
  • Python常用的第三方模块之【pymysql库】操作数据库
  • HarmonyOS 5.0应用开发——MVVM模式的应用
  • CF2103F Maximize Nor
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • 凯撒旅业:2024年营业收入约6.53亿元,同比增长12.25%
  • 建行原副行长章更生被开除党籍:靠贷吃贷,大搞权钱交易
  • 职工疗休养如何告别千篇一律?安徽含山给出新解法
  • 我国将组织实施梦舟飞船零高度逃逸、揽月着陆器综合着陆起飞验证等试验
  • 上海一小学百名学生齐聚图书馆:纸质书的浪漫AI无法取代
  • 护航民营企业出海,上海设37家维权工作站、建立近百人专家团队