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

概述

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

考虑到可能有点小伙伴可能不知道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 演示效果

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

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Qt进行UDPTCP通信的流程和API如下: UDP通信流程: 1. 创建QUdpSocket对象 2. 绑定本地IP地址和端口号 3. 发送数据:使用QHostAddress和quint16参数创建目标地址,使用QUdpSocket的writeDatagram()函数发送数据 4. 接收数据:使用QUdpSocket的readyRead()信号和readDatagram()函数接收数据 UDP通信API: 1. 创建QUdpSocket对象:QUdpSocket *udpSocket = new QUdpSocket(this); 2. 绑定本地IP地址和端口号:udpSocket->bind(QHostAddress::AnyIPv4, port); 3. 发送数据:udpSocket->writeDatagram(data, QHostAddress(targetIP), targetPort); 4. 接收数据:connect(udpSocket, &QUdpSocket::readyRead, this, &MyClass::processPendingDatagrams); void MyClass::processPendingDatagrams() { while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(), datagram.size()); // 处理接收到的数据 } } TCP通信流程: 1. 创建QTcpServer对象 2. 监听端口号:使用QTcpServer的listen()函数监听端口号 3. 接受连接:使用QTcpServer的newConnection()信号和nextPendingConnection()函数接受连接请求,创建QTcpSocket对象 4. 发送数据:使用QTcpSocket的write()函数发送数据 5. 接收数据:使用QTcpSocket的readyRead()信号和read()函数接收数据 TCP通信API: 1. 创建QTcpServer对象:QTcpServer *tcpServer = new QTcpServer(this); 2. 监听端口号:tcpServer->listen(QHostAddress::AnyIPv4, port); 3. 接受连接: connect(tcpServer, &QTcpServer::newConnection, this, &MyClass::processNewConnection); void MyClass::processNewConnection() { QTcpSocket *clientSocket = tcpServer->nextPendingConnection(); connect(clientSocket, &QTcpSocket::readyRead, this, &MyClass::processReadyRead); } 4. 发送数据:clientSocket->write(data); 5. 接收数据: void MyClass::processReadyRead() { QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender()); QByteArray data = clientSocket->readAll(); // 处理接收到的数据 }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨小乌龟11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值