Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例

简介: Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。是关于Qt中TCP和UDP的基本使用和特点:

目录

TCP (Transmission Control Protocol)

UDP (User Datagram Protocol)

1. 模块引入

2. Tcp编程

2.1 头文件

2.2 编程流程

2.3 演示效果

3. Udp编程


概述

Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。

是关于Qt中TCP和UDP的基本使用和特点:

TCP (Transmission Control Protocol)

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Qt中,使用QTcpSocketQTcpServer类来实现TCP通信。

  • QTcpServer:负责监听一个端口,等待客户端的连接请求。当有客户端连接时,服务器会创建一个新的QTcpSocket实例来处理这个连接。
  • QTcpSocket:客户端使用它来发起连接到服务器,并发送和接收数据。TCP连接建立后,数据以连续的数据流形式传输,保证了数据的顺序和完整性。

UDP (User Datagram Protocol)

UDP是一种无连接的、不可靠的、基于数据报的传输层协议。在Qt中,使用QUdpSocket类来实现UDP通信。

  • QUdpSocket:无论是作为发送方还是接收方,都使用同一个类。UDP通信不需要事先建立连接,可以直接发送数据报文到指定的IP地址和端口。由于UDP不保证数据包的到达顺序和是否丢失,因此在某些需要快速传输但对数据完整性和顺序要求不高的场合(如实时音频、视频传输)更为适用。

考虑到可能有点小伙伴可能不知道Tcp和Udp的一些概念,这里我放个传送门,大家可以去了解一下。

TCP和UDP的服务器和客户端通信代码实现,非常简单易懂!(附源码,小白必看!)_tcp或者udp代码实现客户端与服务器之间通讯-CSDN博客

1. 模块引入

开始之前我们需要在Qt的pro文件中增加

QT += network

image.gif

2. Tcp编程

2.1 头文件

#include <QTcpServer>  //TCP服务端使用
#include <QTcpSocket>  //TCP服务器和客户端都使用

image.gif

2.2 编程流程

服务器

实例化QTcpServer对象----------------------------->socket
进入监听状态--listen(QTcpServer)  //不需要再绑定了----------->bind + listen
监测客户端连接--newConnection信号(QTcpServer)---------------->有新连接过来,server就能收到newConnection信号
QTcpSocket *client<--获得连接--nextPendingConnection(QTcpServer)------------------>accept
连接对端接收信号--readyRead(QTcpSocket)---------------------->如果对端有数据发送,server就能收到readyRead信号
读取客户端消息--readAll(QTcpSocket)-------------------------->recv:读取数据
发送数据--write(QTcpSocket)--->send:发数据
关闭连接--disconnectFromHost()------------------->close

image.gif

image.gif 编辑 image.gif 编辑

image.gif 编辑

客户端

实例化QTcpSocket对象
连接服务器--connectToHost--->接着使用waitForConnected来判断是否连接成功
连接对端接收信号--readyRead
发送数据--write()
关闭连接--disconnectFromHost()

image.gif

image.gif 编辑

image.gif 编辑 image.gif 编辑

2.3 演示效果

image.gif 编辑

3. Udp编程

3.1 头文件

#include <QUdpSocket>

image.gif

3.2 编程流程

实例化QUdpSocket对象----------------------------------->socket
绑定地址、端口--bind(QHostAddress::LocalHost, 8888)---->bind
收发报文--readDatagram、writeDatagram------------------>recvfrom/sendto

image.gif

发送端

image.gif 编辑

image.gif 编辑

image.gif 编辑

接收端

image.gif 编辑

image.gif 编辑

image.gif 编辑

2.3 演示效果

image.gif 编辑

基本演示案例就到这里,希望可以帮助到大家~

相关文章
|
19天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
49 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
15天前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
2月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
65 3
|
3月前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
84 10
|
2月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
6月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
210 1
|
5月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
129 0
|
4月前
Qt开发
Qt开发
|
4月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
103 0
|
5月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
230 2

热门文章

最新文章