在Qt

时间:2016-05-12 09:52:34

标签: c++ qt sockets udp

我正在尝试从Arduino Uno接收UDP数据包。计算机接收数据包(它们在wireshark中可见),但在我的Qt应用程序中看不到。我的部分Udp课程:

 #include "udp.h"

Udp::Udp(QHostAddress adr, quint16 pr) : QObject()
{
    address.setAddress(adr.toString());
    port = pr;
    socket = new QUdpSocket();
    status = socket->bind(address,port);
    connect(socket,SIGNAL(readyRead()), this, SLOT(readUdp()));
}

void Udp::sendUdp(QByteArray out)
{
    socket->writeDatagram(out,address,port);
}

QByteArray Udp::readUdp()
{
    QByteArray input;
    input.resize(socket->pendingDatagramSize());
    QHostAddress sender;
    quint16 senderPort;
    socket->readDatagram(input.data(),input.size(),
                             &sender,&senderPort);

   return input;
}
  

socket-> pendingDatagramSize()返回0(有时为-1)。

1 个答案:

答案 0 :(得分:0)

我不知道QT,但在使用berkely socket API时,您需要确保endian

port = htons(pr);

当您的应用程序运行时,您可以在终端中运行netstat -l。您的申请应出现在列表中