我无法通过UDP和QUdpSocket使用QHostAddress :: LocalHost查看IP地址

问题描述 投票:-1回答:1

我打算用Qt Creator做一个小应用桌面。我正在使用QUdpSocket类通过UDP进行简单连接,实际上我使用的是我在互联网上找到的测试代码,但我的问题是当我运行代码时,控制台只显示端口和消息,而不是ip地址来自消息。有人能告诉我我做得不好吗?

The source reference is this

这是头文件:

#ifndef PRUEBAUDP_H
#define PRUEBAUDP_H

#include <QObject>
#include <QUdpSocket>
#include <QDebug>

/*#include <QNetworkDatagram>
#include <QHostAddress>*/


class pruebaUDP : public QObject
{
  Q_OBJECT
public:
  explicit pruebaUDP(QObject *parent = nullptr);
  void mensajeSocket();

signals:

public slots:
void readyRead();

private:
  QUdpSocket *udpSocket;
};

#endif // PRUEBAUDP_H

这是源文件:

    #include "pruebaudp.h"

pruebaUDP::pruebaUDP(QObject *parent) : QObject(parent)
{
  udpSocket = new QUdpSocket(this);
  udpSocket->bind(QHostAddress::LocalHost, 1234);

  connect(udpSocket, SIGNAL(readyRead()),
          this, SLOT(readyRead()));
}

void pruebaUDP::mensajeSocket()
{
  QByteArray dato;
  dato.append("hola");
  udpSocket->writeDatagram(dato, QHostAddress::LocalHost, 1234);
}

void pruebaUDP::readyRead()
{
  QByteArray buffer;
  buffer.resize(udpSocket->pendingDatagramSize());

  QHostAddress sender;
  quint16 senderPort;
  udpSocket->readDatagram(buffer.data(), buffer.size(), &sender, &senderPort);

  qDebug() << "Desde: " << sender.toString();
  qDebug() << "mensaje del puerto: " << senderPort;
  qDebug() << "mensaje: " << buffer;
}

这是主文件:

#include <QCoreApplication>
#include "pruebaudp.h"

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);
  pruebaUDP prueba;
 prueba.mensajeSocket();

  return a.exec();
}

这是输入屏幕截图:

the ip address isn't show

c++ qt
1个回答
0
投票

您使用相同的套接字进行发送和接收。尝试通过其他套接字发送数据,即

void pruebaUDP::mensajeSocket()
{
  QByteArray dato;
  dato.append("hola");
  static QUdpSocket * socket = new QUdpSocket(this);
  socket->writeDatagram(dato, QHostAddress::LocalHost, 1234);
}
© www.soinside.com 2019 - 2024. All rights reserved.