一 发送端程序
#ifndef SENDER_H
#define SENDER_H
#include <QDialog>
class QUdpSocket;
QT_BEGIN_NAMESPACE
namespace Ui { class Sender; }
QT_END_NAMESPACE
class Sender : public QDialog
{
Q_OBJECT
public:
Sender(QWidget *parent = nullptr);
~Sender();
private slots:
void on_pushButton_clicked();
private:
Ui::Sender *ui;
QUdpSocket *sender;
};
#endif // SENDER_H
**********************************
#include "sender.h"
#include "ui_sender.h"
#include <QtNetwork>
Sender::Sender(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Sender)
{
ui->setupUi(this);
sender = new QUdpSocket(this);
}
Sender::~Sender()
{
delete ui;
}
void Sender::on_pushButton_clicked()
{
QByteArray datagram = "hello world";
sender->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);
}
二 客户端程序
#ifndef RECEIVER_H
#define RECEIVER_H
#include <QDialog>
class QUdpSocket;
QT_BEGIN_NAMESPACE
namespace Ui { class Receiver; }
QT_END_NAMESPACE
class Receiver : public QDialog
{
Q_OBJECT
public:
Receiver(QWidget *parent = nullptr);
~Receiver();
private:
Ui::Receiver *ui;
QUdpSocket * receiver;
private slots:
void processPendingDatagram();
};
#endif // RECEIVER_H
*****************************
#include "receiver.h"
#include "ui_receiver.h"
#include <QtNetwork>
Receiver::Receiver(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Receiver)
{
ui->setupUi(this);
receiver = new QUdpSocket(this);
receiver->bind(45454,QUdpSocket::ShareAddress);
connect(receiver,&QUdpSocket::readyRead,this,&Receiver::processPendingDatagram);
}
Receiver::~Receiver()
{
delete ui;
}
void Receiver::processPendingDatagram()
{
//拥有等待的数据报
while(receiver->hasPendingDatagrams())
{
QByteArray datagram;
datagram.resize(receiver->pendingDatagramSize());
receiver->readDatagram(datagram.data(),datagram.size());
ui->label->setText(datagram);
}
}