我正在尝试从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)。
答案 0 :(得分:0)
我不知道QT,但在使用berkely socket API时,您需要确保endian
port = htons(pr);
当您的应用程序运行时,您可以在终端中运行netstat -l。您的申请应出现在列表中