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 编辑

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

相关文章
|
2天前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
|
2天前
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
|
2天前
基于QT实现的QQ聊天简易版(UDP通信版)
源码已经给小伙伴们整理好了,微信搜索 嵌入式工程之家 关注公众号回复 QQ 即可获得源码和详细操作指示哦~
|
4天前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
46 1
|
3天前
|
网络协议 安全 Ubuntu
7 个有用的免费 Linux 网络隧道
【7月更文挑战第4天】
12 0
7 个有用的免费 Linux 网络隧道
|
15天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
39 3
|
2天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
4天前
|
域名解析 网络协议 Linux
linux网络-- 手动配置ip地址
linux网络-- 手动配置ip地址
|
10天前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
28 0

热门文章

最新文章

推荐镜像

更多