Qt QUdpSocket发送格式错误的数据包

Qt QUdpSocket发送格式错误的数据包,qt,networking,udp,qtnetwork,qudpsocket,Qt,Networking,Udp,Qtnetwork,Qudpsocket,我正在建立一个QUdpSocket广播公司。当我在wireshark中查看输出时,它说我的数据包格式不正确。检查数据包时,它们似乎不是通过以太网拖车发出的。我需要自己发出这个,还是你看到了另一个问题?我下面的代码略为精简。请注意,如果通过交叉电缆连接,我的接收设备(微控制器)会看到并响应数据包(如wireshark上所示)。我想确保没有格式错误的帧,这样我就可以在允许UDP通信的交换网络上使用它 谢谢 const quint16 s_packetHeader = 0x5A5A; const qu

我正在建立一个QUdpSocket广播公司。当我在wireshark中查看输出时,它说我的数据包格式不正确。检查数据包时,它们似乎不是通过以太网拖车发出的。我需要自己发出这个,还是你看到了另一个问题?我下面的代码略为精简。请注意,如果通过交叉电缆连接,我的接收设备(微控制器)会看到并响应数据包(如wireshark上所示)。我想确保没有格式错误的帧,这样我就可以在允许UDP通信的交换网络上使用它

谢谢

const quint16 s_packetHeader = 0x5A5A;
const quint16 s_sendReadBackRegisters = 0x0203;

m_udpSocketWriter= new QUdpSocket(this);
QByteArray datagram;
QDataStream ds(&datagram, QIODevice::WriteOnly);
ds.setVersion(QDataStream::Qt_4_8);
ds << s_packetHeader << s_sendReadBackRegisters;
m_udpSocketWriter->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 5000);
注意,最后四个字节对应于我发送的数据5A 5A 02 03

根据一份报告,数据包丢失了拖车位。。。虽然我不是网络专家,但这完全是猜测


Windows 7 x64、VS2010、QT 4.8-最新版本x64

我也看到过类似的情况(wireshark中的行为栗色/粉色/黑色),但不幸的是,我无法找出问题所在,因为接收端点从未出现过问题。您能否验证数据是否正确接收?另外,我会尝试在另一个可以接收数据包的节点上设置wireshark。我希望有人知道这是怎么发生的/为什么发生的。请注意,QUdpSocket工作在第4/3层,而不是第2层。这是一个增加了拖车。我很确定这是操作系统的工作方式(你可以通过wifi/eth局域网等发送数据包,而且这个实现对你来说是透明的。)虽然我不是一个赢家。。。我不认为这会使第2层封装变得糟糕。所以我只关注你可以修改的部分。错误的数据包大小?类似的东西…OSI层,ofc。在Internet模型上,它将是TCP(UDP)/IP堆栈。无论哪种方式,数据链路层都是添加拖车/fcs/任何东西的层。
"1243","886.645245000","172.27.1.117","255.255.255.255","UDP","46","Source port: 58411  Destination port: 5000[Malformed Packet]"

0000   ff ff ff ff ff ff d4 3d 7e 31 e0 27 08 00 45 00  .......=~1.'..E.
0010   00 20 38 6b 00 00 80 11 54 d2 ac 1b 01 75 ff ff  . 8k....T....u..
0020   ff ff e4 2b 13 88 00 0c fe 34 5a 5a 02 03        ...+.....4ZZ..