c++ - UDP数据包可以在wireshark上看到,从代码输出看不到
问题描述
我正在尝试从 UDP 连接的红外摄像机接收数据包。(FLIR Lepton 2.5) 我正在尝试在 Windows 10、Qt Creator 4.5、Qt 5.9 上运行我的代码。
正如您在下面的捕获中看到的,我的 UDP 连接的红外摄像机发送 UDP 数据包。
这是我的代码:
// 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();
}
这是我的代码实现结果:
当信号连接()时,数据无法调整大小(错误)
可以接收数据(如果否返回-1):-1
数据在这里:
已连接!
QAbstractSocket::ConnectedState
当信号准备好Read()时,已连接!
QAbstractSocket::ConnectedState
数据已正确调整大小;大小:0
可以接收数据(如果否则返回 -1):-1 数据在这里:
readyRead 信号有时似乎没有按预期发出。
但很明显,没有发送任何数据。
我试图找到与远程网络的 UDP 网络相关的示例。但是他们很少。
根据一些线程,人们建议不要connectToHost
在 UDP 网络上使用函数。但是,我不知道如何在不使用connectToHost
.
我想知道我应该如何更正我的代码以从远程网络获取数据包。任何建议都会非常感谢我,因为我是 UDP 网络和 Qt 的新手。
解决方案
推荐阅读
- augmented-reality - 为什么 .reality 文件的文件大小比 .usdz 大得多?
- python - learning_curve 中的自定义评分
- python - Python中有一个函数可以找到两个字典之间的差异吗?
- java - 如何在java中合并两个嵌套的HashMap
- docker - 无法从主机访问在 docker 中创建的 kafka 代理
- pyephem - pyephem - 为时间方程计算太阳的赤经计算
- excel - 操作 excel 中的单元格以计算 Excel 中的列数
- javascript - 如何防止特定元素在表单内提交?
- ios - 更改 iOS 中的导航栏位置后,UIbarbutton 操作不起作用
- python - 我可以在 seaborn 和 networkx 之间协调颜色吗?