#pragma once
#include <QtWidgets/QWidget>
#include <QUdpSocket>
#include "ui_QtUdp.h"
class QtUdp : public QWidget
{
Q_OBJECT
public:
QtUdp(QWidget *parent = Q_NULLPTR);
private slots:
void slotDealMsg();
void slotSend();
void slotClose();
private:
Ui::QtUdpClass ui;
QUdpSocket *udpSocket;
};
#include "QtUdp.h"
#include <QHostAddress>
QtUdp::QtUdp(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
udpSocket = new QUdpSocket(this);
udpSocket->bind(8888);
connect(udpSocket, &QUdpSocket::readyRead, this, &QtUdp::slotDealMsg);
connect(ui.button_Send,&QPushButton::clicked,this,&QtUdp::slotSend);
connect(ui.button_Close, &QPushButton::clicked, this, &QtUdp::slotClose);
}
void QtUdp::slotDealMsg()
{
char buffer[1024] = { 0 };
QHostAddress cliAddr;
quint16 port;
qint64 len = udpSocket->readDatagram(buffer,sizeof(buffer), &cliAddr, &port);
if (len > 0)
{
QString str = QString::fromLocal8Bit("[%1:%2] %3").arg(cliAddr.toString()).arg(port).arg(buffer);
ui.textEdit->setText(str);
}
}
void QtUdp::slotSend()
{
QString str = ui.textEdit->toPlainText();
QString IP = ui.lineEdit_IP->text();
quint16 port = ui.label_Port->text().toInt();
udpSocket->writeDatagram(str.toUtf8(), QHostAddress(IP),port);
}
void QtUdp::slotClose()
{
udpSocket->disconnect();
udpSocket->close();
}