首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法通过带有QUdpSocket的UDP使用QHostAddress::LocalHost查看ip地址

我无法通过带有QUdpSocket的UDP使用QHostAddress::LocalHost查看ip地址
EN

Stack Overflow用户
提问于 2018-03-06 13:12:10
回答 1查看 257关注 0票数 0

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

The source reference is this

这是头文件:

代码语言:javascript
复制
#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

这是源文件:

代码语言:javascript
复制
    #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;
}

下面是主文件:

代码语言:javascript
复制
#include <QCoreApplication>
#include "pruebaudp.h"

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

  return a.exec();
}

这是一个输入屏幕截图:

EN

回答 1

Stack Overflow用户

发布于 2018-03-06 15:09:56

发送和接收使用相同的套接字。尝试通过其他套接字发送数据,例如

代码语言:javascript
复制
void pruebaUDP::mensajeSocket()
{
  QByteArray dato;
  dato.append("hola");
  static QUdpSocket * socket = new QUdpSocket(this);
  socket->writeDatagram(dato, QHostAddress::LocalHost, 1234);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49123785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档