QUdpSocket发送格式错误的数据包

时间:2013-08-05 18:19:59

标签: qt networking udp qtnetwork qudpsocket

我正在建立一个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);

和wireshark的输出

"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..

请注意,最后四个字节对应于我发送的数据,5A 5A 02 03。

根据google image search,数据包缺少预告片位...虽然我不是网络专家,但这完全是猜测。

Windows 7 x64,VS2010,QT 4.8-latest x64

0 个答案:

没有答案