B站视频讲解https://www.bilibili.com/video/BV1zNvkeAEZy?p=14
GitHub源码https://github.com/KeepTryingTo/QT_Learning/tree/main/QtUDPSocket/QtClient
本篇博文主要是介绍基于UDP协议的简单通信,相关的文章也有很多,本文不仅仅让读者理解UDP协议的通信大致流程,而且对UDP和TCP协议之间的通信流程区别。通过demo视频的方式给搭建呈现出来,便于直观的了解。
1.绑定IP和端口
- 客户端如果要向服务端发送消息的话,首先需要绑定特定IP以及本机端口(该端口用于监听进入的UDP数据包)。
- 服务端同样需要绑定特定IP和本机端口(这里服务端本机端口和客户端不要求一样),服务端和客户端才能建立通信。
- 根据双方绑定的IP和端口发送消息给对方,比如当前客户端绑定的IP为127.0.0.1,绑定的本机端口为8080,如果服务端要给客户端发送消息,那么服务端所指定的接收者端口以及IP必须为127.0.0.1和8080,因为客户端就是使用8080端口来监听来自服务端UDP数据包。
2.从给定IP和端口接收消息
- 根据接受的消息,确定对方IP以及端口。
- 如果第一步服务端和客户端已经了连接,那么第二步其实是不需要单独写出来,只是为了大家方便理解。
3.理解了上面UDP协议通信流程之后,从如下图可以看到,只需要实现绑定端口以及IP等功能,然后开启两个界面即可进行客户端和服务端的通信,不需要像TCP协议那样,服务端和客户端分开实现。
Qt中基于UDP协议的通信
附加内容
特性 | TCP | UDP |
可靠性 | TCP保证数据的可靠传输,通过重传机制和确认机制避免数据丢失或损坏 | UDP不提供重传和确认机制,数据传输不可靠 |
顺序性 | TCP保证数据按照发送的顺序进行传输,接收端可以按照相同顺序重组数据 | UDP数据报独立发送,接收端无法保证数据按照发送顺序接收 |
流量控制 | TCP使用滑动窗口机制来控制发送端的数据量,避免接收端缓冲区溢出 | 没有流量控制机制 |
无连接 | 需要事先建立连接(三次握手机制) | UDP不需要进行连接的建立和维护,数据报独立发送 |
TCP | UDP |
优点:
•
可靠性高:通过重传和确认机制保证数据的可靠性,适用于对数据完整性要求高的应用场景。
•
顺序性强:保证数据按照发送顺序传输,适用于需要按序处理的应用场景。
缺点:
•
开销大:
TCP
需要建立连接、维护状态和进行确认,占用较多的网络资源。
•
传输速度相对较慢:由于提供可靠性保证,
TCP
的传输速度相对较慢。
| 优点:
•
传输速度快:无需建立连接和提供可靠性保证,适用于实时性要求较高的应用场景。
•
开销小:
UDP
不需要维护连接状态和进行确认,占用较少的网络资源。
缺点
•
不可靠性高:由于无重传和确认机制,数据传输可能丢失或损坏。
•
顺序性差:
UDP
数据报独立发送,接收端无法保证数据按照发送顺序接收。
|
socket测试软件下载https://www.hw-group.com/software/hercules-setup-utility