知识点
https://github.com/taw19960426/Qt_study/tree/main/QUdpSocket
结果演示
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7d7564d710b41dcae7f0ffd0f8038fb.gif#pic_center)
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("服务端port:8888");
udpSocket=new QUdpSocket(this);
udpSocket->bind(QHostAddress::AnyIPv4, 8888);
udpSocket->joinMulticastGroup( QHostAddress("224.0.0.2") );
connect(udpSocket,&QUdpSocket::readyRead,this,&Widget::delUdp);
}
Widget::~Widget()
{
delete ui;
}
void Widget::delUdp(){
char buf[1024]={0};
QHostAddress ip;
quint16 port;
qint64 ans=udpSocket->readDatagram(buf,sizeof(buf),&ip,&port);
if(ans>0){
QString str=QString("[%1:%2] %3").arg(ip.toString()).arg(port).arg(buf);
ui->textEdit->setText(str);
}
}
void Widget::on_buttonSend_clicked()
{
QString ip=ui->lineEditIP->text();
quint16 port=ui->lineEditPort->text().toInt();
QString str=ui->textEdit->toPlainText();
udpSocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_buttonSend_clicked();
private:
Ui::Widget *ui;
QUdpSocket *udpSocket;
void delUdp();
};
#endif