QT之UDP通信

参考链接:

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

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

9516f2f7840ea024da2fe15cb3fe5241.png

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();
};

0bfd98518c1b4c39e7ba2c0c0d0efbff.png

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();
};

957156d3fe65be628924d6cd9588a082.png

测试结果:

b95dfbe7af0bae22e6915842d6518863.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zls365365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值