一,前言
之前做的都是QT的TCP通信,从来没做过QT的udp通信,所以我从自己的小小代码库中找不到udp通信的最小代码,那么现在做一个吧。
二,代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
m_receiver=new QUdpSocket(this);
//绑定发送端,ShareAddress允许多接收端绑定1234端口
if(m_receiver->bind(QHostAddress("127.0.0.1"), 1234, QUdpSocket::ShareAddress))
{
qDebug("ok");
//当接收端接收到数据时,就会发送readRead信号
connect(m_receiver,SIGNAL(readyRead()),this,SLOT(processData()));
}
else
{
qDebug("nok");
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::processData()
{
QString strData;
qDebug("gohere");
while(m_receiver->hasPendingDatagrams()){
QByteArray dataGram;
//读取的数据大小
dataGram.resize(m_receiver->pendingDatagramSize());
m_receiver->readDatagram(dataGram.data(),dataGram.size());
ui->dataLabel->setText(dataGram); //将接收到的数据显示到标签上
}
}
三,效果
注意远程主机的端口要设置为和代码是一样的,比如1234
image.png
四,小结
我的QT小小代码库又多了一份积累,今天的练习主要是为了我之后的小项目做的基础准备工作。
网友评论