接收端
/*Widget.h*/
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtNetwork>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
QUdpSocket *receiver;
private slots:
void processPendingDatagram();
};
#endif // WIDGET_H
/*Widget.cpp*/
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
receiver = new QUdpSocket(this);
receiver->bind(45454,QUdpSocket::ShareAddress);
connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::processPendingDatagram() //处理等待的数据报
{
while(receiver->hasPendingDatagrams()) //拥有等待的数据报
{
QByteArray datagram; //拥于存放接收的数据报
datagram.resize(receiver->pendingDatagramSize());
//让datagram的大小为等待处理的数据报的大小,这样才能接收到完整的数据
receiver->readDatagram(datagram.data(),datagram.size());
//接收数据报,将其存放到datagram中
ui->label->setText(datagram);
//将数据报内容显示出来
}
}