writeDatagram() was called not in QAbstractSocket::BoundState or QAbstractSocket::ConnectedState

Создаю QT клиент-серверное приложение, которое бы по нажатию на кнопку отправляло бы сообщение всем клиентам по протоколу UDP. В качестве отправной точки использовал туториал на Youtube:https://www.youtube.com/watch?v=4qx4FaglSig. Пошагово повторял действия автора:

Файл myudp.h:

#ifndef MYUDP_H
#define MYUDP_H

#include <QObject>
#include <QUdpSocket>
#include <QDebug>
#include <QtDebug>
#include <QAbstractSocket>

class myUDP : public QObject
{
    Q_OBJECT
public:
    explicit myUDP(QObject *parent = nullptr);
    void sendMessage(QString Message);

signals:

public slots:
    void readyRead();

private:
    QUdpSocket *socket;
};

#endif // MYUDP_H 

Файл myudp.cpp:

#include "myudp.h"

myUDP::myUDP(QObject *parent) : QObject(parent)
{
   socket = new QUdpSocket(this);
   socket -> bind(QHostAddress::LocalHost, 1234);
   connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
}

void myUDP::sendMessage(QString Message)
{
   QByteArray Data;
   Data.append(Message);
   socket -> writeDatagram(Data, QHostAddress::LocalHost, 1234);
}

void myUDP::readyRead()
{
   QByteArray Buffer;
   Buffer.resize(socket->pendingDatagramSize());
   QHostAddress sender;
   quint16 senderPort;
   socket->readDatagram(Buffer.data(), Buffer.size(), &sender, &senderPort);
   qDebug() << "Message from: " << sender.toString();
   qDebug() << "Message port: " << senderPort;
   qDebug() << "Message: " << Buffer;

}

И, наконец, функция по нажатию кнопки для отправки сообщения в mainwindow.cpp:

void MainWindow::on_sendButton_clicked()
{
    myUDP Server;

    myUDP client;

    client.sendMessage("Hello there!");
}

Однако при тестировании по нажатию на кнопку ничего не происходит, а в Application Output получаем сообщени: QNativeSocketEngine::writeDatagram() was called not in QAbstractSocket::BoundState or QAbstractSocket::ConnectedState

Насколько я понял, программа не смогла подключиться к сокету. Подскажите, пожалуйста, как это можно исправить?


Ответы (0 шт):