zoukankan      html  css  js  c++  java
  • Qt利用QUdpSocket实现UDP点对点通信处理

     相关资料:

    https://download.csdn.net/download/zhujianqiangqq/47467208      代码包下载

    udpsend.cpp主函数

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 #include <QByteArray>
     4 #include <QCoreApplication>
     5 #include <QUdpSocket>
     6 #include <QTimer>
     7 
     8 const quint16 PORT = 2333;
     9 
    10 MainWindow::MainWindow(QWidget *parent)
    11     : QMainWindow(parent)
    12     , ui(new Ui::MainWindow)
    13 {
    14     ui->setupUi(this);
    15 
    16     m_pTimer = new QTimer(this);
    17     m_pTimer->setSingleShot(false);
    18     m_pTimer->start(1000);
    19     connect(m_pTimer, &QTimer::timeout, this, &MainWindow::on_Timer);
    20 }
    21 
    22 MainWindow::~MainWindow()
    23 {
    24     delete ui;
    25 }
    26 
    27 void MainWindow::on_pushButton_clicked()
    28 {
    29     // 初始化UDP对象
    30     QUdpSocket oUDPSend;
    31     // 发送信息
    32     QDateTime sysDateTime;
    33     QByteArray msg = (sysDateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss")+" \n").toLatin1();
    34     oUDPSend.writeDatagram(msg, QHostAddress("10.0.1.45"), PORT);// 需要先帮定127.0.0.1或10.0.1.45,都是本机IP
    35     // 输出信息(提示用,没有实际作用)
    36     ui->textEdit->insertPlainText(QStringLiteral("1"));
    37 }
    38 
    39 void MainWindow::on_Timer()
    40 {
    41     on_pushButton_clicked();
    42 }
    View Code

    udpReceiver.cpp主函数

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 
     4 MainWindow::MainWindow(QWidget *parent)
     5     : QMainWindow(parent)
     6     , ui(new Ui::MainWindow)
     7 {
     8     ui->setupUi(this);
     9 
    10     m_pUDPReceiver = new QUdpSocket;
    11     m_pUDPReceiver->bind(QHostAddress("10.0.1.45"), PORT);// 第一步:需要先帮定127.0.0.1或10.0.1.45,都是本机IP
    12     connect(m_pUDPReceiver, SIGNAL(readyRead()), this, SLOT(receive()));//第二步:帮定读取事件
    13 }
    14 
    15 MainWindow::~MainWindow()
    16 {
    17     delete ui;
    18     delete m_pUDPReceiver;
    19 }
    20 
    21 void MainWindow::receive()
    22 {
    23     QByteArray ba;
    24     QString ss;
    25     while(m_pUDPReceiver->hasPendingDatagrams())
    26     {
    27         ba.resize(m_pUDPReceiver->pendingDatagramSize());
    28         m_pUDPReceiver->readDatagram(ba.data(), ba.size());
    29         ss = QString::fromUtf8(ba.data());
    30         ui->textEdit->insertPlainText(ss);
    31     }
    32 }
    View Code

     

    作者:疯狂Delphi
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

    欢迎关注我,一起进步!扫描下方二维码即可加我

  • 相关阅读:
    第27课二阶构造模式(上)---------出现的背景
    第26课 静态成员函数
    第25课类的静态成员变量
    第24课经典问题解析(下)--------类的成员函数和成员变量隶属某个具体对象吗
    第24课经典问题(中)-----关于const对象的疑问
    第24课经典的问题(上)---------对象的构造顺序与析构顺序
    第23课 神秘的临时对象
    断剑重铸007
    DG on Windows 10 S: 执行任意代码
    断剑重铸006
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/15593094.html
Copyright © 2011-2022 走看看