可以在wireshark上看到UDP数据包,而不是从代码输出中看到

时间:2019-01-16 09:05:01

标签: c++ qt sockets udp udpclient

我正在尝试从连接UDP的红外摄像机接收数据包。 (FLIR Lepton 2.5)并且我试图在Windows 10,Qt Creator 4.5,Qt 5.9上运行代码。

正如下面的截图所示,连接UDP的红外摄像机发送UDP数据包。

enter image description here

这是我的代码:

MyPageControl

这是我的代码实现结果:

当连接了信号()时,无法调整数据大小(错误)
可以接收数据(如果否则返回-1):-1
数据在这里:
已连接!
// myudp.cpp #include "myudp.h" #include <QNetworkProxy> MyUDP::MyUDP(QObject *parent) : QObject(parent) { // create a QUDP socket socket = new QUdpSocket(this); socket_cam = new QUdpSocket(this); cam_address = QHostAddress("192.168.10.197"); cam_port = 32197; connect(socket, SIGNAL(connected()), this, SLOT(readNwrite())); socket->connectToHost(cam_address, cam_port, QIODevice::ReadWrite); if (socket->waitForConnected(2000)) qDebug("Connected!"); else qDebug("Cannot be connected.."); qDebug() << socket->state(); // seems to be connected... } void MyUDP::readNwrite() { QByteArray data; qint64 resize_size = socket->pendingDatagramSize(); //socket have NO size(resize_size == -1, ERROR!) if(resize_size != -1) { qDebug() << "data was resized properly; size: "<<resize_size; data.resize(socket->pendingDatagramSize()); } else qDebug() << "data could not be resized(error)"; qint64 det_num; det_num = socket->readDatagram(data.data(), 964, &cam_address, &cam_port); qDebug() << "Can receive data(returns -1 if NO): "<<det_num; //this returns nothing, too! qDebug() << "Data is here: " << data.data(); }

当信号准备就绪时Read(),已连接!
QAbstractSocket::ConnectedState数据已正确调整大小;大小:0
可以接收数据(如果否则返回-1):-1 数据在这里:
有时似乎未发出readyRead信号。

但是很明显,没有发送任何数据。

我试图找到与带有远程网络的UDP网络相关的示例。但是他们很少。

根据某些线程,人们建议不要在UDP网络上使用QAbstractSocket::ConnectedState功能。但是,我不知道如何在不使用connectToHost的情况下建立远程网络。

我想知道如何更正我的代码以从远程网络获取数据包。任何建议都会对我非常感激,因为我是UDP网络和Qt的新手。

0 个答案:

没有答案