分享

QT之UDP通信

 ontheroad96j47 2021-11-08

参考链接:

https://www.cnblogs.com/wurenzhong/p/8030220.html

这里用的无线网:ipconfig查看下ip

udpsend:

udpSend.cpp:

#include "udpSend.h"//#include <QUdpSocket>#include <QMessageBox>
udpSend::udpSend(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this);
mSocket = new QUdpSocket();
}void udpSend::on_sendBt_clicked() { //单播 qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(),QHostAddress("192.168.0.194"),8007); //组播ip地址范围:224.0.0.0-239.255.255.255 //qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(),QHostAddress("224.0.0.100"),6677); //广播 // qint64 len = mSocket->writeDatagram(ui.textEdit->toPlainText().toUtf8(), QHostAddress::Broadcast, 8007); //QMessageBox::information(this, "Warning", ui.textEdit->toPlainText().toUtf8()); }

udpSend.h

#pragma once
#include <QtWidgets/QMainWindow>#include "ui_udpSend.h"#include <QUdpSocket>

class udpSend : public QMainWindow{ Q_OBJECT
public: udpSend(QWidget *parent = Q_NULLPTR);
private: Ui::udpSendClass ui; QUdpSocket *mSocket;
private slots: void on_sendBt_clicked();};

udpRecv:

udpRecv.cpp

#include "udpRecv.h"#include <QMessageBox>#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif
udpRecv::udpRecv(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); //创建对象 初始化 mSocket = new QUdpSocket();
//绑定 mSocket->bind(QHostAddress::AnyIPv4,8007); //QMessageBox::information(this, "Warning", QString(QHostAddress::AnyIPv4));//不会乱码 //关联读数据信号readyread connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data())); }
void udpRecv::read_data() { QByteArray array; QHostAddress address; quint16 port; array.resize(mSocket->bytesAvailable());//根据可读数据来设置空间大小 mSocket->readDatagram(array.data(),array.size(),&address,&port); //读取数据 ui.listWidget->addItem(array);//显示数据 //发送反馈数据 } void udpRecv::on_checkBox_clicked(bool checked) { if(checked) { //加入组播 mSocket->joinMulticastGroup(QHostAddress("224.0.0.100")); } else { //退出组播 mSocket->leaveMulticastGroup(QHostAddress("224.0.0.100")); } }

udpRecv.h:

#pragma once
#include <QtWidgets/QMainWindow>#include "ui_udpRecv.h"#include <QUdpSocket>
class udpRecv : public QMainWindow{ Q_OBJECT
public: udpRecv(QWidget *parent = Q_NULLPTR);
private: Ui::udpRecvClass ui; QUdpSocket *mSocket;
private slots: void on_checkBox_clicked(bool); void read_data();};

测试结果:

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多