Отправляю датаграмму по UdpSocket на свой IP в инете, но не могу поймать его. Только начал изучать работу с сетью в Qt. Подскажите пожалуйста что не так или куда копать, для решения проблемы. С QHostAddress::LocalHost всё работает.
Трансмитер
head1.h :
#include <QUdpSocket>
#include <QObject>
#include <QVBoxLayout>
#include <QByteArray>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QHostAddress>
class UDPcls : public QObject
{
Q_OBJECT
public:
QPushButton *btn_transmit = new QPushButton("Отправить");
QLineEdit *line_Edit = new QLineEdit();
QVBoxLayout *lay = new QVBoxLayout();
QWidget *window = new QWidget();
QUdpSocket *socket = new QUdpSocket();
void realiz()
{
lay->addWidget(line_Edit);
lay->addWidget(btn_transmit);
window->setLayout(lay);
window->setWindowTitle("Reciever");
window->show();
socket->bind(QHostAddress("94.25.229.127"), 0);
connect(btn_transmit, SIGNAL(clicked(bool)), this, SLOT(btn_transmit_clicked()));
}
public slots:
void btn_transmit_clicked()
{
QByteArray data;
data.append(line_Edit->text());
socket->writeDatagram(data, QHostAddress("94.25.229.127"), 0);
line_Edit->setText("Датаграмма отправлена");
}
};
main.cpp :
#include "head.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
UDPcls UDPobj;
UDPobj.realiz();
return a.exec();
}
Ресивер
head2.h :
#include <QUdpSocket>
#include <QObject>
#include <QByteArray>
#include <QWidget>
#include <QLabel>
class UDPcls : public QObject
{
Q_OBJECT
public:
QLabel *lbl = new QLabel("Ожидание датграммы...");
QUdpSocket *socket = new QUdpSocket();
void realiz()
{
lbl->show();
socket->bind(QHostAddress("94.25.229.127"), 0);
connect(socket, SIGNAL(readyRead()), this, SLOT(reciev()));
}
public slots:
void reciev()
{
QByteArray data;
data.resize(socket->pendingDatagramSize());
socket->readDatagram(data.data(), data.size());
lbl->setText(data);
}
};
main.cpp :
#include "head.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
UDPcls UDPobj;
UDPobj.realiz();
return a.exec();
}