目录
TCP (Transmission Control Protocol)
概述
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。
是关于Qt中TCP和UDP的基本使用和特点:
TCP (Transmission Control Protocol)
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Qt中,使用QTcpSocket
和QTcpServer
类来实现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
2. Tcp编程
2.1 头文件
#include <QTcpServer> //TCP服务端使用 #include <QTcpSocket> //TCP服务器和客户端都使用
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
编辑 编辑
编辑
客户端
实例化QTcpSocket对象 连接服务器--connectToHost--->接着使用waitForConnected来判断是否连接成功 连接对端接收信号--readyRead 发送数据--write() 关闭连接--disconnectFromHost()
编辑
编辑 编辑
2.3 演示效果
编辑
3. Udp编程
3.1 头文件
#include <QUdpSocket>
3.2 编程流程
实例化QUdpSocket对象----------------------------------->socket 绑定地址、端口--bind(QHostAddress::LocalHost, 8888)---->bind 收发报文--readDatagram、writeDatagram------------------>recvfrom/sendto
发送端
编辑
编辑
编辑
接收端
编辑
编辑
编辑
2.3 演示效果
编辑
基本演示案例就到这里,希望可以帮助到大家~