首页 > 解决方案 > Qt QUdpSocket 在发送数据时触发 readyRead()

问题描述

我为 UDP 通信编写了以下简单程序:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    udpSocket = new QUdpSocket(this);
    udpSocket->bind(QHostAddress::AnyIPv4, 4000);
    connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readDataFromSocket()));

    udpSocket->writeDatagram("Test Data", QHostAddress("192.168.2.91"), 3000);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::readDataFromSocket()
{
    while (udpSocket->hasPendingDatagrams()) {
           udpSocket->receiveDatagram();
          qDebug()<<"UDP data received";
      }
}

现在的问题是,当我运行这个程序时,readyRead() 也会在发送数据时触发。几个有趣的发现:

任何人都可以帮忙吗?

标签: qtudpqt5qudpsocket

解决方案


推荐阅读