【发布时间】:2017-12-05 00:46:39
【问题描述】:
首先让我说这很可能是 UDP 配置问题而不是 QT 问题。
我在 ubuntu 计算机上使用 UDP 重播将 PCAP 文件播放到 Windows PC。当我通过wireshark检查UDP数据时,我可以看到每个数据包中的所有相关数据。但是,当我使用我的 QT 程序时,我得到了数据包,它具有适当的长度,但数据包内没有数据,只有 0。
我将 Windows PC 的 IP 地址设置为与 ubuntu 源 PC 位于同一子网,并配置了正确的端口。
我基本上使用的是 QT Multicast Receiver 示例,这里:http://doc.qt.io/qt-5/qtnetwork-multicastreceiver-example.html
有什么想法吗?
编辑:
我很抱歉没有包含正确的代码。
void Receiver::processPendingDatagrams()
{
while (udpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(), datagram.size());
statusLabel->setText(tr("Received datagram: \"%1\"")
.arg(datagram.data()));
}
}
无论数据包实际包含什么,datagram.data() 字节数组都简单地用零填充。
想法?
【问题讨论】:
-
不知道为什么这被否决了。老实说,我在这里需要一些帮助。如果可以的话,让我进一步充实这一点。我收到的每个 UDP 数据包的长度为 1375 字节。我收到一个 1375 字节的数据报,但内容全是 0。
-
我不是反对者,但是...您必须显示相关代码——最好是minimal reproducible example。否则一切都只是猜测。
-
感谢您的反馈,我已经更新了问题。
标签: c++ qt sockets networking