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

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

相关文章
|
12月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
825 2
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
909 1
|
网络协议 算法 安全
Go语言的网络编程与TCP_UDP
Go语言由Google开发,旨在简单、高效和可扩展。本文深入探讨Go语言的网络编程,涵盖TCP/UDP的基本概念、核心算法(如滑动窗口、流量控制等)、最佳实践及应用场景。通过代码示例展示了TCP和UDP的实现,并讨论了其在HTTP、DNS等协议中的应用。最后,总结了Go语言网络编程的未来发展趋势与挑战,推荐了相关工具和资源。
520 5
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
1527 2
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
1100 3
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
Java API 网络安全
Java网络编程入门
Java网络编程入门
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解

推荐镜像

更多
  • qt